Date.getDay()返回不同的值
这个问题在这里已经有了答案:
当然,你的声明是1990-11-11
月11日星期天是真实的,但你必须了解JavaScript Date
对象:
你自己的测试说明这一点:
new Date('1990-11-11').getDay() // returns 6
> new Date('1990-11-11')
Sat Nov 10 1990 17:00:00 GMT-0700 (MST)
会发生什么情况是,构造函数根据所使用的语法采用本地时间或UTC:
注意:如果Date被调用为具有多个参数的构造函数,则指定的参数表示本地时间。 如果需要UTC,则使用具有相同参数的新Date(Date.UTC(...))。
注意:由于浏览器的差异和不一致性,强烈建议不要使用Date构造函数(和Date.parse,它们是等同的)解析日期字符串。 仅支持RFC 2822格式字符串。 对ISO 8601格式的支持因日期不同而不同(例如“1970-01-01”)被视为UTC,而不是本地。
...而你的语法使它成为UTC。 但许多其他方法假定当地时间:
getDay()方法根据当地时间返回指定日期的星期几,其中0表示星期日。
错误的是星期天返回的那个,而这一定是因为格式不正确。 1990-11-11
被解释为UTC时间11日午夜00:00:00
,这是您所在时区的第10次星期六下午5点。
如果你使用getUTCDay()
,你应该在两个日期都得到0
。
new Date('1990-11-11').getUTCDay() // returns 0
new Date('2016-01-03').getUTCDay() // returns 0
getDay返回日索引(从0到6),其中0是星期日。 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date/getDay
返回值:根据当地时间,与给定日期的星期几对应的整数值:0表示星期日,1表示星期一,2表示星期二,等等。
更新:新日期构造函数返回这些日期的不同时间值。
new Date('2016-1-3') ==> Sun Jan 03 2016 00:00:00 GMT+0100 (CET)
new Date('1990-11-11') ==> Sun Nov 11 1990 01:00:00 GMT+0100 (CET)
出于某种原因,第一个在你的机器上被解释为星期六。 对不起,无法帮助更多
UPDATE2:
每月/每天使用两位数字应标准化结果。 例:
(new Date('2016-01-03')).getDay() ==> 0
上一篇: Date.getDay() is returning different values
下一篇: DD HH:MM:SS T