Конвертировать JSON даты без часового пояса - PullRequest
5 голосов
/ 23 сентября 2010

У меня есть веб-сервис, который возвращает, например, объект DateTime: DepartureDate.Я использую ajax для извлечения этого и, на мой взгляд, я преобразую строку даты JSON в объект даты javascript с помощью этой функции:

function convertToDate(jsonDate) {
    return eval("new " + jsonDate.substring(1, jsonDate.length - 1));
}

Проблема заключается в том, что new Date() использует локальное время на клиентском компьютеревнимание, поэтому клиенты в разных странах получают разные даты.Я хочу получить точную дату, которая была возвращена с веб-сервиса.Есть ли простой способ сделать это?

1 Ответ

6 голосов
/ 23 сентября 2010

Проблема в том, что new Date() учитывает местное время на клиентском компьютере

Нет.Создание новой даты с использованием конструктора меток времени занимает метку времени UTC.

Например, на моем компьютере в формате UTC + 1:

new Date(0)   // Thu Jan 01 1970 01:00:00 GMT+0100 (CET)

OK, по умолчанию отображается toString эта дата как 01:00:00, которая выглядит неправильной, но на самом деле это правильное время.01:00:00 в UTC + 1 - 00:00:00 в UTC, это момент, описанный меткой времени 0.

Если вы хотите отобразить даты, которые вы создали из отметки времени вUTC, используйте date.toUTCString() или выберите и отформатируйте составные части даты, используя getUTCFullYear(), getUTCMonth() и т. Д.

Пожалуйста, не вводите eval.

new Date(parseInt(jsonDate.slice(6, -1), 10))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...