gpt4 book ai didi

javascript - 如何从 '20180131T120000Z' 之类的字符串值解析为日期?

转载 作者:行者123 更新时间:2023-11-30 11:24:30 25 4
gpt4 key购买 nike

我正在尝试将字符串日期格式 (yyyyMMddThhmmssZ) 解析为日期。

const date = Date.parse("20171201T120000Z");
console.log(date );

结果是……

NaN

你能教我最聪明的方法吗?

最佳答案

理想情况下,您应该尝试以最适合您需要的方式标准化日期字符串。作为MDN states , 从字符串中解析日期通常是有问题的。

Date.parse()

Note: Parsing of strings with Date.parse is strongly discouraged due to browser differences and inconsistencies.

虽然你的日期格式是valid ISO 8601如@duskwuff 的评论所示,Date.parse 不支持它。

好像the version specified here by ECMAScript is supported , YYYY-MM-DDTHH:mm:ss.sssZ,但不是像您使用的 20180131T011614Z 这样的格式。似乎 Date.parse 只支持 ISO 8601 格式的简化。

类似moment.js 的图书馆很有帮助,因为它可以自动解析各种日期格式(包括有效的 ISO 8601 日期),或者如果需要,您甚至可以明确指定日期格式。

moment('20171201T120000Z', 'YYYYMMDDTHHmmssZ').toString()
"Fri Dec 01 2017 06:00:00 GMT-0600"
moment('20171201T120000Z').toString()
"Fri Dec 01 2017 06:00:00 GMT-0600"

不过,对于您的示例,您可以在没有 moment.js 的情况下解析日期

let dateString = '20171201T120000Z'
let [_, year, month, day, hour, min, sec] = dateString.match(/(\d{4})(\d{2})(\d{2})T(\d{2})(\d{2})(\d{2})/)
// month is 0-based so subtract 1
new Date(year, month - 1, day, hour, min, sec)

Could you teach me the smartest way?

我会说“最聪明的方法”会根据您的情况而有很大差异。

  • 您是否控制这些日期字符串的来源?
  • 日期字符串是否来自其他系统?
  • 用户是否输入了这些日期字符串?

只要你使用一些标准(即使它不被Date.parse直接支持),那么我会说解析可以用任何有效的方法完成最适合你。像 moment 这样的库,手动解析日期的元素,将您的日期转换为纪元或 Date.parse 可识别的格式,或您喜欢的任何格式。

关于javascript - 如何从 '20180131T120000Z' 之类的字符串值解析为日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48532697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com