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
   249   250   251   252   253   254   255   256   257   258   259