Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将2020-03-02T13:40:03.000Z转换为DD/MM/YYYY HH:MM:SS的正则表达式_Javascript_Regex_Date - Fatal编程技术网

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

Javascript 将2020-03-02T13:40:03.000Z转换为DD/MM/YYYY HH:MM:SS的正则表达式,javascript,regex,date,Javascript,Regex,Date,考虑日期时间2020-03-02T13:40:03.000Z 我想把它转换成02-03-2020 13:40:03 以下函数将YYYYMMDD转换为DD/MM/YYYY const convertDateToDDMMYYYY = (date) => { const newDate = date.replace(/(\d{4})(\d{2})(\d{2})/g, '$1-$2-$3'); return newDate; } 我们怎么能忽略T和.000Z后缀?您可以使

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

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

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

  const convertDateToDDMMYYYY = (date) => {
    const newDate = date.replace(/(\d{4})(\d{2})(\d{2})/g, '$1-$2-$3');
    return newDate;
  }
我们怎么能忽略
T
.000Z
后缀?

您可以使用

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

  • ^
    -字符串的开头
  • (\d{4})
    -第1组:年份
  • -(\d{2})-
    -连字符,第2组:月,然后是连字符
  • (\d{2})
    -第3组:天
  • T
    -a T(刚刚匹配,未捕获!)
  • (\d{2}:\d{2}:\d{2})
    -第4组:时间部分
  • \。
    -一个点
  • \d+
    -1+位
  • Z
    -a
    Z
    char
  • $
    -字符串结束
请参阅JS演示:

const convertdatetoddmmyyy=(日期)=>{
返回日期。替换(/^(\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”)
您可以通过使用对象,然后提取每个部分来实现所需的结果:

const date=新日期('2020-03-02T13:40:03.000Z');
常数=
[('0'+date.getUTCDate()).slice(-2),
('0'+(date.getUTCMonth()+1)).slice(-2),
日期:getUTCFullYear()
].join(“-”)+
' ' +
[('0'+date.getUTCHours()).slice(-2),
('0'+date.getUTCMinutes()).slice(-2),
('0'+date.getUTCSeconds()).slice(-2)
]。加入(“:”);

控制台日志(sdate)
这太棒了,你能给我推荐一个好的教程来学习吗?@JAN我不知道你的正则表达式知识水平:),所以我只能建议你在,通读,(通过许多其他链接到伟大的在线资源)和所谓的社区上完成所有课程。还有,值得一看。如果可以的话,我会给你+400000000000000000000汉克,但我只想要正则表达式。@JAN有什么特别的原因吗?使用内置的
Date
对象的优点是,它可以处理的日期格式远远多于
2020-03-02T13:40:03.000Z
@Nick您不应该将内置解析器用于除两种受支持格式之外的任何格式,因此,仍然需要对其进行自定义,以解析每种不同的格式。@RobG I指的是,受支持的
ISO8601
RFC 2822
格式都有可选部分,从而在指定日期时间值时具有更大的灵活性。