我有一个API,它返回Date类,如下所示。2022-07-25T12:38:36.443798Z现在我想从这个字符串中创建javascript Date对象。但是,Date.parse据说不稳定,具体取决于浏览器。那么,生成Date对象的最佳实践是什么?
2022-07-25T12:38:36.443798Z
Date
5sxhfpxr1#
但是,Date.parse据说不稳定,具体取决于浏览器该规范定义了一种受支持得日期时间字符串格式,所有符合规范得引擎都必须支持此格式:ECMAScript基于ISO 8601日历日期扩展格式的简化,定义了日期时间的字符串交换格式。格式如下:YYYY-MM-DDTHH:mm:ss.sssZ请注意,此格式仅将亚秒精度指定为3位数,这是引擎中Date值的当前最大精度。当提供日期字符串参数时,Date构造函数(new Date(/*...*/))使用的算法与Date.parse使用的算法相同,因此可以使用其中一个来解析所提供的字符串格式,并获得相同的结果:
YYYY-MM-DDTHH:mm:ss.sssZ
new Date(/*...*/)
Date.parse
const dateString = '2022-07-25T12:38:36.443798Z'; const date1 = new Date(dateString); const date2 = new Date(Date.parse(dateString)); console.log('date1 locale:', date1.toLocaleString()); console.log('date2 locale:', date2.toLocaleString()); console.log('date1 UTC:', date1.toISOString()); console.log('date2 UTC:', date2.toISOString()); console.log('date1 ms:', date1.getMilliseconds()); console.log('date2 ms:', date2.getMilliseconds());
如果需要比毫秒更高的精度,则需要使用自定义实现(或者等待Temporal🤞)。
nzkunb0c2#
您可以建立新的Date对象,如下所示:
new Date("2022-07-25T12:38:36.443798Z");
请记住,浏览器将使用本地机器的时区。如果需要提取UTC时间,请使用date对象上的“getUTC”方法。
.getUTCDate() .getUTCHours()
等等。
tkqqtvp13#
通过调用Date作为构造函数来创建日期对象:
new Date()
3条答案
按热度按时间5sxhfpxr1#
但是,Date.parse据说不稳定,具体取决于浏览器
该规范定义了一种受支持得日期时间字符串格式,所有符合规范得引擎都必须支持此格式:
ECMAScript基于ISO 8601日历日期扩展格式的简化,定义了日期时间的字符串交换格式。格式如下:
YYYY-MM-DDTHH:mm:ss.sssZ
请注意,此格式仅将亚秒精度指定为3位数,这是引擎中
Date
值的当前最大精度。当提供日期字符串参数时,
Date
构造函数(new Date(/*...*/)
)使用的算法与Date.parse
使用的算法相同,因此可以使用其中一个来解析所提供的字符串格式,并获得相同的结果:如果需要比毫秒更高的精度,则需要使用自定义实现(或者等待Temporal🤞)。
nzkunb0c2#
您可以建立新的Date对象,如下所示:
请记住,浏览器将使用本地机器的时区。如果需要提取UTC时间,请使用date对象上的“getUTC”方法。
等等。
tkqqtvp13#
通过调用Date作为构造函数来创建日期对象: