2014-09-05 2 views
0

У меня есть дата String в таком формате: Tue Sep 02 00:00:00 GMT+200 2014, Я хотел бы иметь только в Javascript этот формат ISO: 2014-09-02T00:00:00.000Z.Преобразование даты Javascript

Так что я написал этот код:

var date = new Date("Tue Sep 02 00:00:00 GMT+200 2014"); 
date.toJSON(); 

но он возвращает: "2014-09-01T22:00:00.000Z". Как я могу получить подходящую дату в формате ISO? Спасибо.

+2

Почему вы ожидаете, что 'Tue Sep 02 00:00:00 GMT + 200 2014' должен равняться' 2014-09-02T00: 00: 00.000Z'? Первая дата имеет смещение по времени, которое отсутствует во втором. –

+0

«Вт Сен 02 00:00:00 GMT + 200 2014» поступает из кода Java, он передается в Javascript, но в JS мне нужно одно и то же время в формате ISO, это возможно? – django

+3

@django: Мы сообщаем вам, что вы уже * получаете * правильный формат ISO. – Bergi

ответ

1

Если вы хотите использовать JavaScript родной объекта Date, вы можете захотеть взглянуть на its documentation первых, особенно в toISOString() method.

var date = new Date("Tue Sep 02 00:00:00 GMT+200 2014"); 
var n = date.toISOString(); 

это возвращает:

n: '2014-09-01T22:00:00.000Z' 

который является правильный формат ISO. Ваше начальное время: GMT + 2, поэтому в соответствии со временем ISO оно соответствует той же дате/времени, но двум часам до. Поскольку это 2 сентября, 00:00:00, за 2 часа до начала дня накануне, 1 сентября, в 22:00:00. Вы не можете задать 2014-09-02T00:00:00.000Z в своем вопросе, потому что он не соответствует дате ISO.

Вы можете узнать больше о ISO 8601 on Wikipedia.

+0

Я собираюсь отредактировать свои ссылки tho :) Как они говорят то же самое (за это время), я думал, что это было бы так хорошо. Я редактирую это. Спасибо, что указали это @ t.niese! – Eriatolc

+1

w3schools улучшились, но они все еще частично неполны и все еще имеют вводящие в заблуждение примеры и описания. например для объекта Date: '[...] Обратите внимание, что объекты JavaScript Date могут быть созданы только путем вызова JavaScript Date в качестве конструктора [...]' является важной информацией, которая отсутствует. –

-1

Существует метод для этого.

date.toISOString() 
+0

Он также возвращает: «2014-09-01T22: 00: 00.000Z». – django

+3

'date.toISOString()' возвращает то же, что и ['MDN: Date.prototype.toJSON()'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ Date/toJSON) '[...] Вызов toJSON() возвращает форматированную строку JSON (используя toISOString), представляющую значение объекта Date. [...]' –

+0

Поскольку это представление этой даты в формате ISO, обратите внимание, что вы используете GMT ​​+ 2 и использовать ISO Zulu – javiyu

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