Javascript getDay()返回错误的结果

时间:2014-08-26 14:52:34

标签: javascript date

我的代码

var d = new Date("2014-09-01"); 
var days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];
days[d.getDay()]

我期待 days[d.getDay()]周一返回,但周日返回

我位于太平洋时间加州区

我错过了什么吗?

2 个答案:

答案 0 :(得分:1)

您传递给构造函数的字符串"2014-09-01"不表示时区。在Chrome和Firefox上(根据我现在的测试),这似乎被解释为GMT日期。当您致电getDay()时,会在当地时区指定当天。

所以在我的情况下,由于我在加利福尼亚州,格林尼治标准时间午夜2014-09-01实际上是8月31日下午5点在PDT。

答案 1 :(得分:1)

Dan Tao是对的,这是你如何修复丢失的时区。

var d = new Date("2014-09-01"); 
var days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];
d.setTime( d.getTime() + d.getTimezoneOffset()*60000 ); 

http://jsfiddle.net/s1bse8fm/2/

相关:How do you create a JavaScript Date object with a set timezone without using a string representation