JS中Date.parse()和Date.UTC()返回值不一致

Date.parse()方法用于解析表示日期的字符串,并返回从1970-1-1 00:00:00 UTC到该日期的毫秒数。此方法可以处理多种格式的日期字符串,包括RFC2822标准格式。建议在使用时明确指定时区以避免解析偏差。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Date.parse() 方法解析一个表示某个日期的字符串,并返回从1970-1-1 00:00:00 UTC 到该日期对象(该日期对象的UTC时间)的毫秒数,如果该字符串无法识别,或者一些情况下,包含了不合法的日期数值(如:2015-02-31),则返回值为NaN。

语法

显示调用:

Date.parse(dateString)

隐式调用:

new Date(dateString)

parse 方法接受一个表示时间的字符串,返回相应的时间值。该方法可以接受符合 RFC2822 / IETF 日期语法 (RFC2822 Section 3.3) 的字符串,如 "Mon, 25 Dec 1995 13:30:00 GMT"。该方法能够理解美国大陆时区的缩写,但是为了更通用,应该使用时区偏移,如 "Mon, 25 Dec 1995 13:30:00 +0430" (格林威治的子午线向东偏移4小时30分钟)。如果没有指定时区,默认使用本地时区。

GMT 和 UTC 被看作相等。 如果 RFC2822 Section 3.3 格式中不包含时区信息时,会以本地时区来解析日期字符串。

由于在解析日期字符串时存在偏差会导致结果不一致,因此推荐始终手动解析日期字符串,特别是不同的ECMAScript实现会把诸如“2015-10-12 12:00:00”的字符串解析为NaN,UTC或者本地时间。

 

所以,若要返回值一致,最好在Date.parse()参数中指明时区,合适的例子如下:

Date.parse("Wed, 09 Aug 1995 00:00:00");
在时区 GMT-0300 中返回 807937200000 ,在其他时区中返回另外的值,因为没有时区标志并且不是 ISO 格式,所以作为本地时区处理。

Date.parse("Wed, 09 Aug 1995 00:00:00 GMT");
因为指定了时区 GMT (UTC),所以不管本地时区如何,总是返回 807926400000 。

 

 

转载于:https://www.cnblogs.com/OldJack/p/8688894.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值