如何从字符串生成javascript日期类

deikduxw  于 2022-12-10  发布在  Java
关注(0)|答案(3)|浏览(187)

我有一个API,它返回Date类,如下所示。
2022-07-25T12:38:36.443798Z
现在我想从这个字符串中创建javascript Date对象。
但是,Date.parse据说不稳定,具体取决于浏览器。
那么,生成Date对象的最佳实践是什么?

5sxhfpxr

5sxhfpxr1#

但是,Date.parse据说不稳定,具体取决于浏览器
该规范定义了一种受支持得日期时间字符串格式,所有符合规范得引擎都必须支持此格式:
ECMAScript基于ISO 8601日历日期扩展格式的简化,定义了日期时间的字符串交换格式。格式如下:YYYY-MM-DDTHH:mm:ss.sssZ
请注意,此格式仅将亚秒精度指定为3位数,这是引擎中Date值的当前最大精度。
当提供日期字符串参数时,Date构造函数(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🤞)。

nzkunb0c

nzkunb0c2#

您可以建立新的Date对象,如下所示:

new Date("2022-07-25T12:38:36.443798Z");

请记住,浏览器将使用本地机器的时区。如果需要提取UTC时间,请使用date对象上的“getUTC”方法。

.getUTCDate()
.getUTCHours()

等等。

tkqqtvp1

tkqqtvp13#

通过调用Date作为构造函数来创建日期对象:

new Date()

相关问题