我觉得我在这里错过了一些东西.
Date.getDay()方法应该返回0-6之间的值.星期日为0,星期六为6.
现在我有两个日期,两个都是'星期日',应该返回0.
new Date('1990-11-11').getDay() // returns 6
new Date('2016-1-3').getDay() // returns 0
Run Code Online (Sandbox Code Playgroud)
造成这种差异的原因是什么?我敢问这个.getDay()方法的有效性,但我无法弄清楚发生了什么.
编辑
> new Date('1990-11-11')
Sat Nov 10 1990 17:00:00 GMT-0700 (MST)
> new Date('2016-01-03')
Sat Jan 02 2016 17:00:00 GMT-0700 (MST)
> new Date('2016-1-3') // they say this format is wrong, but it returns the right date
Sun Jan 03 2016 00:00:00 GMT-0700 (MST)
Run Code Online (Sandbox Code Playgroud)
我不明白发生了什么.1月3日是星期日,1990年11月11日是星期日.为什么周六说?
当然,你所说的1990-11-11周日是正确的,但你必须理解 JavaScriptDate对象:
您自己的测试说明了这一点:
new Date('1990-11-11').getDay() // returns 6
> new Date('1990-11-11')
Sat Nov 10 1990 17:00:00 GMT-0700 (MST)
Run Code Online (Sandbox Code Playgroud)
所发生的情况是,构造函数根据所使用的语法假定本地时间或 UTC:
注意:当 Date 被作为具有多个参数的构造函数调用时,指定的参数表示本地时间。如果需要 UTC,请使用具有相同参数的 new Date(Date.UTC(...)) 。
注意:由于浏览器差异和不一致,强烈建议不要使用 Date 构造函数(和 Date.parse,它们是等效的)解析日期字符串。对 RFC 2822 格式字符串的支持只是按照惯例。对 ISO 8601 格式的支持的不同之处在于,仅日期字符串(例如“1970-01-01”)被视为 UTC,而不是本地。
...并且您的语法使其成为 UTC。但许多其他方法假定当地时间:
getDay() 方法根据当地时间返回指定日期是星期几,其中 0 表示星期日。
| 归档时间: |
|
| 查看次数: |
778 次 |
| 最近记录: |