日期格式问题

时间:2014-11-24 17:38:56

标签: javascript date

所以我从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也是getOrdinalst是一个提供文字ndrd或{{ 1}}当天,formatAMPM非常明显。

2 个答案:

答案 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()方法返回星期三的星期三。