日期格式问题

问题描述:

所以我在此日期从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:00”)

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只是文本天一个阵列,是monthsgetOrdinal是一个函数,赋予文字stndrd当天,formatAMPM很明显。

+3

如果您需要正确的日期处理,您可以使用[Moment.js](http://momentjs.com/)。 Js标准日期是过时的。 – Nit 2014-11-24 17:41:33

+0

是的,我知道,但我不觉得整个库是将日期转换为字符串版本所必需的 – 2014-11-24 17:42:39

+0

@SterlingArcher开始时可能并不如此,但考虑时区(及其偶然更新)和本地化,再加上相反的情况(将本地化日期转换回API格式)。时刻可能值得一提,或即将推出。 – ssube 2014-11-24 17:46:27

.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)。这是因为日期在构建时转换为当地时区

+0

啊,这很有道理。我只是意识到我想getDate不会得到...愚蠢的错误。 – 2014-11-24 17:47:47

+0

不好说,因为它被转换为当地时间,所以7变成6.咚咚 – Rajesh 2014-11-24 17:48:20

我不认为这里有任何问题。 你的日期是2014-08-07T00:00Z,Z表示祖鲁时区(相当于UTC),使用new Date()就会转换为当地时间,这里是格林威治标准时间-4,这就是为什么你得到4小时差。 对于“3”,getDay()方法会返回星期几,即星期三。

+0

你太好了,因为它被转换为当地时间,所以7变成6. +1 – Rajesh 2014-11-24 17:48:51