Squeak.ru - шаблоны программирования

Преобразование дат JSON без часового пояса

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

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

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


  • какое значение переменной jsonDate 23.09.2010
  • может быть, например, /Дата(1285321800000)/ 23.09.2010

Ответы:


1

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

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

Например, на моей машине в UTC+1:

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

Хорошо, по умолчанию 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))
23.09.2010
  • Спасибо за отличный ответ, bobince. Я плохо разбираюсь в датах и ​​прочем, так что, возможно, я не все здесь понимаю, но я сделал то, что вы предложили, и результат все тот же. Если я изменю свой часовой пояс на своем компьютере, время изменится (я хочу, чтобы они оставались неизменными независимо от того, в каком часовом поясе вы находитесь, и они должны следовать часовому поясу AST). 24.09.2010
  • Время, отображаемое с помощью toString(), изменяется в соответствии с вашим часовым поясом, но это не означает, что дата отличается. new Date(1285321800000).getUTCHours() всегда равно 9 независимо от вашего часового пояса. Придерживайтесь функций getUTC... и setUTC..., и дата будет вести себя так, как вы ожидаете. 24.09.2010
  • Новые материалы

    Угловая структура архитектуры
    Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

    «Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
    Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

    Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
    В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

    Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
    React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

    Создайте API с помощью Python FastAPI
    Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

    Веселье с прокси-сервером JavaScript
    Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

    Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
    Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...