2014-11-24 2 views
1

Так я эту дату вернулся из API:Формат даты Выдает

"2014-08-07T00:00Z"

И результаты от new Date("2014-08-07T00:00Z")Wed Aug 06 2014 20:00:00 GMT-0400 (EDT) равного и .getDay() на эту дату дает мне 3.

Почему это происходит с 7-го по 6-е, а getDay возвращает 3?

В основном я пытаюсь вернуть дату возврата API на английский язык.

days[d.getDay()]+", "+months[d.getMonth()]+" "+getOrdinal(d.getDay())+" "+formatAMPM(d) 

(ака "среда, 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 только массив текстовых дней, как months, getOrdinal это функция, которая дает текст st или nd или rd на день, и formatAMPM довольно очевиден.

+3

Вы можете использовать [Moment.js] (http://momentjs.com/), если вам нужна правильная обработка даты. Стандартная дата Js невелика. – Nit

+0

Да, я знаю это, но я не чувствую, что для преобразования даты в строчную версию требуется целая библиотека. –

+0

@SterlingArcher. Может показаться, что это не так сначала, но учитывайте часовые пояса (и их периодические обновления) и локализацию, плюс обратный случай (поворот локализованных дат возвращается в формат API). Момент, вероятно, стоит потянуть, или скоро. – ssube

ответ

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") is Wed Aug 06 2014 18:00:00 GMT-0600 (MDT). Это связано с тем, что даты преобразуются в ваш местный часовой пояс, когда они построены.

+0

Ах, это имеет смысл. Я просто понял, что хочу, чтобы getDate не получал ... глупую ошибку. –

+0

хорошо сказано, так как он преобразуется в местное время, так что 7 становится 6. Thumps up – Rajesh

1

Не думаю, что здесь есть какие-либо проблемы. Ваша дата 2014-08-07T00: 00Z, с Z означает часовой пояс Zulu (эквивалент UTC), и с помощью new Date() на нем будет конвертировать ваше местное время, здесь GMT-4, поэтому вы получаете разницу в 4 часа , И для «3» метод getDay() возвращает день недели, среду в вашем случае.

+0

Вы слишком хорошо сказали, что он преобразуется в местное время, так что 7 становятся 6. +1 – Rajesh

Смежные вопросы