代码之家  ›  专栏  ›  技术社区  ›  JAN

将2020-03-02T13:40:03.000Z转换为DD/MM/YYYY HH:MM:SS的正则表达式

  •  1
  • JAN  · 技术社区  · 5 年前

    考虑一下日期时间 2020-03-02T13:40:03.000Z

    我想把它转换成 02-03-2020 13:40:03

    以下函数将YYYY MM DD转换为DD/MM/YYYY。

      const convertDateToDDMMYYYY = (date) => {
        const newDate = date.replace(/(\d{4})(\d{2})(\d{2})/g, '$1-$2-$3');
        return newDate;
      }
    

    我们怎么能忽视 T .000Z 后缀?

    2 回复  |  直到 5 年前
        1
  •  1
  •   Wiktor Stribiżew    5 年前

    你可以用

    .replace(/^(\d{4})-(\d{2})-(\d{2})T(\d{2}:\d{2}:\d{2})\.\d+Z$/, '$3-$2-$1 $4')
    

    regex demo

    • ^ -字符串开头
    • (\d{4}) -第一组:年份
    • -(\d{2})- -连字符,第2组:月,然后连字符
    • (\d{2}) -第三组:白天
    • T
    • (\d{2}:\d{2}:\d{2}) -第4组:时间部分
    • \. -点
    • \d+ -1+位
    • Z Z轴 烧焦
    • $

    查看JS演示:

    const convertDateToDDMMYYYY = (date) => {
        return date.replace(/^(\d{4})-(\d{2})-(\d{2})T(\d{2}:\d{2}:\d{2})\.\d+Z$/, '$3-$2-$1 $4');
      }
    
    console.log(convertDateToDDMMYYYY("2020-03-02T13:40:03.000Z"))
        2
  •  1
  •   Nick SamSmith1986    5 年前

    Date 对象,然后提取每个部分:

    const date = new Date('2020-03-02T13:40:03.000Z');
    
    const sdate =
      [('0' + date.getUTCDate()).slice(-2),
       ('0' + (date.getUTCMonth() + 1)).slice(-2),
       date.getUTCFullYear()
      ].join('-') +
      ' ' +
      [('0' + date.getUTCHours()).slice(-2),
       ('0' + date.getUTCMinutes()).slice(-2),
       ('0' + date.getUTCSeconds()).slice(-2)
      ].join(':');
    
    console.log(sdate);