当前位置: 首页 > 知识库问答 >
问题:

javascript - 请问这种格式如何换算成下面这种时间格式?

谢嘉
2023-06-02

明日 10:30:40
今日 14:00:08
6月8日 17:07:16

请问以上这些格式如何换算成下面这种时间格式
2023-6-2 10:30:40
2023-6-1 14:00:08
2023-6-8 17:07:16

用asp函数或者正则。
请问能做到吗?
可能难度很大,希望有超级高手帮忙。
谢谢。

共有2个答案

祁和通
2023-06-02

我不太懂asp是啥,用js实现了一下,处理了了一些异常情况,目前从结果来看应该能满足你的需求。 当前 我的正则对 x月x 和 时间的校验不是很严格,你完全可以再修改一下。

如果能帮到你,帮我点个小赞,哈哈哈
function formatTime(dateStr = '') {
      if(dateStr) {
        const dateMatch = dateStr.replace(/^(([月\d]{3,5})|([前今明后]))日(\s[0-9:]{8})$/, (match, p1, p2, p3, time) => {
          let date = ''
          if(p1.length === 1) {
            const dateMap = {
              '前': -2,
              '昨': -1,
              '明': 1
            };
            const count = dateMap[p1] || 0;
            const today = new Date().getDate()
            const dateNum = today + count;
            const current = new Date();
            current.setDate(dateNum);
            date = new Date(current).toLocaleDateString();
          }else {
            const year = new Date().getFullYear();
            const mon = p1.split('月')[0];
            const day = p1.split('月')[1];

            const current = new Date()
            current.setMonth(mon - 1);
            current.setDate(day);

            date = new Date(current).toLocaleDateString();
          }
          const resStr = date + time;
          const str = new Date(date + time).toLocaleString()
          console.log('end: ', dateStr, ' => ', str);
          return str;
        })
        return dateMatch
      }
    }
    console.log(formatTime('明日 10:30:40')); // 2023/6/2 10:30:40
    console.log(formatTime('今日 14:00:08')); // 2023/6/1 14:00:08
    console.log(formatTime('6月8日 17:07:16')); // 2023/6/8 17:07:16
    
    // 稍微有些特殊的情况
    console.log(formatTime('0月1日 17:07:16')); //2022/12/1 17:07:16
    console.log(formatTime('12月35日 17:07:16')); // 2024/1/4 17:07:16
    console.log(formatTime('13月3日 17:07:16')); // 2024/1/3 17:07:16
司空坚
2023-06-02

对于今日new Date()就行,然后转成年月日

function formatDateTime() {
  const d = new Date();
  const year = d.getFullYear();
  const month = d.getMonth() + 1;
  const date = d.getDate();
  const hours = d.getHours();
  const minutes = d.getMinutes();
  const seconds = d.getSeconds();
  return `${year}-${month}-${date} ${hours}:${minutes}:${seconds}`;
}

昨日就是今日减去一,对于几月几日将月和日字替换成-就行

 类似资料: