Page 254 - Браун Э. - Изучаем JavaScript. Руководство по созданию современных веб-сайтов - 2017
P. 254
(облаке) подходе к разработке приложений один и тот же базовый код может вы
полняться на серверах во всем мире. Создавая локальные даты, вы напрашиваетесь
на неприятности. Если вы в состоянии использовать даты UTC, можете создавать их,
используя метод UTC объекта Date.
const d = new Date ( D ate . U TC ( 2 0 1 6 , 4 , 2 7 ) ) ; / / Мау 27, 201 6 ИТС
Метод Date . UTC получает все те же варианты аргументов, что и кон
структор Date, но вместо нового экземпляра объекта Date он возвра
щает числовое значение даты. Затем это число может быть передано
в конструктор Date для создания экземпляра даты.
Если необходимо создавать даты на сервере находящемся в определенном часо
вом поясе (и нет желания осуществлять преобразования часового пояса вручную),
вы можете использовать moment . tz для создания экземпляров Date с определенным
часовым поясом.
/ / Передача массива в Momen t . j s использует те же параметры, что и
/ / конструктор Da te JavaScript, включая отсчитываемый от нуля месяц
/ / (O=Jan , l=Feb и т . д . ) . Метод toD t e () преобразует назад
a
/ / в объект Da te JavaScript .
e
const d = moment . t z ( [ 2 0 1 6 , 3 , 2 7 , 9 , 1 9 ] , ' A merica/Los_Angel s ' ) . toDate ( ) ;
Создан и е дат в браузере
Вообще, стандартное поведение JavaScript соответствует браузеру. Браузеру
от операционной системы известен часовой пояс, в котором он находится, и поль
зователи обычно предпочитают для работы местное время. Если вы создаете при
ложение, которое должно обрабатывать даты в других часовых поясах, то лучше ис
пользовать Moment . j s для обработки, преобразования и представления дат в других
часовых поясах.
П е редача дат
Все становится куда интересней при передаче даты, когда сервер посылает дату
в браузер или наоборот. Сервер и браузер могут находиться в разных часовых по
ясах, а пользователи хотят видеть даты в их локальном часовом поясе. К счастью,
поскольку экземпляры Date JavaScript хранят дату как числовое смещение времени
в UTC от Эпохи Unix, передавать объекты Date обычно безопасно.
Мы говорили о "передаче" весьма неопределенно, но что же именно мы под ней
подразумеваем? Самый верный способ гарантировать правильность передачи дат
в JavaScript - это использовать спецификацию JSON (JavaScript Object Notation).
Фактически эта спецификация не определяет тип данных для дат, что весьма при
скорбно, поскольку это предотвращает симметричный анализ JSON.
Передача дат 257

