Очередной блог фрилансера

коротко и полезно о веб-разработке

Menu
  • О чем это все
Menu

О DateTime в UTC замолвите слово

14.09.202005.12.2020

Давайте на минуточку вспомним то, что все и так знают. Дата в UTC — это дата по Гринвичу, то есть GMT±0:00.

Соответственно, если мы получаем с сервера дату/время в UTC, мы должны конвертировать ее с учетом нашего локального часового пояса.
Для этого в яваскрипте есть разные способы.

Самый простой, это создать объект даты из полученной строки, а затем вызвать метод toString()

const date = new Date('2020-09-13T21:11:32+0000');
date.toString(); // выведет Mon Sep 14 2020 00:11:32 GMT+0300 (Moscow Standard Time)

Или можно вот так, например, получив разницу во времени:

const date = new Date('2020-09-13T21:11:32+0000');
const difference = date.getTimezoneOffset();
const localDate = new Date(date.getTime() + difference).toString(); // так же выведет Mon Sep 14 2020 00:11:32 GMT+0300 (Moscow Standard Time)

 

Но прежде, чем начинать что-то куда-то конвертировать, присмотритесь внимательно к дате, которая пришла с сервера. Вполне может оказаться, что дата возвращается в формате ISO 8601 — что есть международный формат форматирования даты и времени. Он, в том числе, указывает часовой сдвиг либо говорит нам о том, что дата в UTC.

Как это выглядит?

1994-11-05T08:15:30-05:00 // -5 часов по Гринвичу
1994-11-05T13:15:30Z // буква Z в конце означает 0 часов по Гринвичу

И вот если в вашей дате, пришедшей с сервера, обнаруживается буква Z на конце или часовой сдвиг, как в примере выше, никакая конвертация даты на клиенте не нужна!

Достаточно создать объект даты из полученной строки:

const localDate = new Date('2020-08-31T12:27:43Z'); //Mon Aug 31 2020 15:27:43 GMT+0300 (Moscow Standard Time)

localDate уже и будет содержать верную дату, с учетом вашего часового пояса. Создание new Date() из строки формата ISO 8601 все сделает за вас.

Возможно это сэкономит вам немного времени.

2 комментариев

  1. Программист из Японии:
    12.10.2020 в 20:12

    Именно время практичнее конвертнуть ещё на сервере, через тот же php например.
    Вполне возможен вариант что у посетителя сайта в браузере будет отключен джаваскрипт.

    Ответить
    1. Ольга Фомина:
      12.10.2020 в 21:03

      отключен js, это в 2020-то? в век спа и толстого клиента? сомнительно как-то

      Ответить

Добавить комментарий Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Об авторе

avatar

Ольга Фомина

Senior Frontend Developer
Почтовые технологии
telegram youtube instagram vkontakte

Рубрики

  • angular
  • JavaScript
  • nodejs
  • svg
  • wordpress
  • верстка
  • изучаем Jquery
  • общая
  • переводы
  • плагины Jquery
  • юнит-тесты
© 2023 Очередной блог фрилансера | Powered by Superbs Personal Blog theme