Javascript new Date(dateString)处理

psa*_*ton 8 javascript

有人会解释为什么dateString不同的格式会给出不同的日期吗?

> new Date("04/08/1984")
<· Sun Apr 08 1984 00:00:00 GMT-0600 (Mountain Daylight Time)
> new Date("1984-04-08")
<· Sat Apr 07 1984 18:00:00 GMT-0600 (Mountain Daylight Time)
Run Code Online (Sandbox Code Playgroud)

Mar*_*lli 7

当您创建DatedateString参数传递给构造函数的新对象时,将使用该Date.parse()方法对其进行解析.现在,引用MDN文档(强调我的):

假定时区的差异

给定日期字符串"March 7, 2014"(或"03/07/2014"),parse()假设一个本地时区,但给定ISO格式,例如"2014-03-07"它将假定UTC时区.因此Date,使用这些字符串生成的对象将表示不同的时刻,除非系统设置了UTC的本地时区.

因此,由于您提供的是ISO格式的第二个字符串,并且您的本地时区是UTC + 6,因此您获得的日期比您的日期落后6小时,因为它计算为UTC + 0.事实上:

Apr 07 1984 18:00:00 = Apr 08 1984 00:00:00 - 06:00:00
Run Code Online (Sandbox Code Playgroud)

谜团已揭开!