我的代码
var d = new Date("2014-09-01");
var days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];
days[d.getDay()]
我期待
days[d.getDay()]
周一返回,但周日返回
我位于太平洋时间加州区
我错过了什么吗?
答案 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