所以我从API返回了这个日期:
"2014-08-07T00:00Z"
此日期new Date("2014-08-07T00:00Z")
等于Wed Aug 06 2014 20:00:00 GMT-0400 (EDT)
和.getDay()的结果给了我3个。
为什么从8月7日到6日,getDay返回3?
基本上我正在尝试将API返回日期转换为英语。
days[d.getDay()]+", "+months[d.getMonth()]+" "+getOrdinal(d.getDay())+" "+formatAMPM(d)
(又名“星期三,8月3日晚上8点”)
console.log(d,data[i].startDate, d.getDay());
//yields
// Wed Aug 06 2014 20:00:00 GMT-0400 (EDT) "2014-08-07T00:00Z" 3
days
只是一个文本日数组,months
也是getOrdinal
,st
是一个提供文字nd
或rd
或{{ 1}}当天,formatAMPM
非常明显。
答案 0 :(得分:4)
.getDay()
返回星期几。我想你期待.getDate()
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getDay https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getDate
这就是为什么你看到这是一个星期三。
我new Date("2014-08-07T00:00Z")
的结果是Wed Aug 06 2014 18:00:00 GMT-0600 (MDT)
。这是因为日期在构造时会转换为您的本地时区
答案 1 :(得分:1)
我不认为这里有任何问题。
您的日期是2014-08-07T00:00Z,Z表示祖鲁时区(相当于UTC),使用new Date()
就可以转换为您当地时间,这里是格林威治标准时间-4,这就是您获得的原因4个小时的差异。
对于" 3",getDay()方法返回星期三的星期三。