2015-12-09 2 views
3

Я передаю эту новую дату на консоль Firefox и Chrome (тот же компьютер и часовой пояс), и я получаю смешанные результаты. Так что сбив с толку ... In chrome новый Date(); // Wed Dec 09 2015 18:06:55 GMT + 0530 (IST)Почему новая функция Date() дает разные выходные данные в chrome и firefox?

В firefox новый Date(); // Дата 2015-12-09T12: 36: 34.410Z

ответ

6

Ваше замешательство вызвано разным отображением часовых поясов.

Ваш Chrome дает вам время в UTC + 0, в то время как Firefox дает вам время в GMT + 0530.

Вы можете указать как вы хотите, чтобы всегда быть UTC написав

var myDate = new Date(); 
myDate.toISOString() // will give you a date in the format you see by Chrome 
+1

Nice один. Я совершенно неправильно понял вопрос. :-) Стоит отметить, что объект 'Date' имеет одно и то же значение, разница здесь заключается в том, как он * выводится * при преобразовании в строку. –

+0

У экземпляров даты нет метода UTC. То, что вы могли бы намереваться, было [* toISOString *] (http://www.ecma-international.org/ecma-262/6.0/#sec-date.prototype.toisostring) (который разделен на длинный формат ISO 8601 в формате UTC) или [* toUTCString *] (http://www.ecma-international.org/ecma-262/6.0/#sec-date.prototype.toutcstring), который зависит от реализации, но всегда использует UTC для значений. – RobG

+0

@RobG Вы правы, я проверил его перед публикацией, но похоже, что определенная библиотека могла добавить это к прототипу даты. – AlexD

0

То, что вы видите, является результатом Date.prototype.toString, который полностью зависит от реализации. Таким образом, вы можете увидеть другую строку в каждом тестируемом клиенте.

Вы можете использовать toISOString, чтобы получить строку формата ISO 8601, которая является UTC. Существует polyfill on MDN.

document.write(new Date().toISOString());

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