Page 251 - Браун Э. - Изучаем JavaScript. Руководство по созданию современных веб-сайтов - 2017
P. 251
соответствует дата Ы Это не дата рождения Христа, а просто произвольная дата:
1 января 1 9 70 года, 00:00:00 UTC.
Поскольку вы, вероятно, знаете, что мир делится на часовые пояса (TZ), незави
симо от того, где вы находитесь, в 7 утра будет утро, а в 7 после полудня - вечер.
Часовые пояса могут быть сложны, тем более если учитывать летнее время. Я не буду
пытаться объяснить в этой книге все нюансы Г р игорианского календаря или часовых
поясов - Википедия превосходно решает эту задачу. Но чтобы помочь вам понять
объект JavaScript Date (и пользу Moment . j s), некоторые из основ рассмотреть стоит.
Все часовые пояса определяются как смещения от Всемирного координированного
времени (сокращенно - UTC), а все подробности ищите в Википедии. Иногда UTC
(не совсем корректно) называют Средним временем по Гринвичу (Greenwich Mean
Time - GMT). Например, я в настоящее время нахожусь в Орегоне, который на
ходится в Тихоокеанском часовом поясе. Тихоокеанское время на семь или восемь
часов отстает от UTC. Что значит "на семь или восемь"? Как это возможно? Все за
висит от времени года. Летом это летнее время, и смещение - семь часов. Осталь
ную часть года это стандартное время, и смещение - восемь часов. Здесь важно не
запомнить часовые пояса, а понять, как представляются смещения. Если я открою
(
терминал JavaScript и введу new Date ) , я увижу следующее.
Sat Jul 1 8 2 0 1 5 1 1 : 0 7 : 0 6 GM - 0 7 0 0 ( P acific Daylight Tirne )
T
Обратите внимание, что в этом очень подробном формате часовой пояс определя -
0
c
ется как смещение и от UTC (GMT- 7 00), и по имени (Pa i f i c Dayli g ht i me).
T
В JavaScript во всех экземплярах объекта Date дата и время хранится в виде оди
ночного числа - количества миллисекунд (не секунд!), прошедших с Эпохи Unix.
Обычно JavaScript преобразует это число в удобочитаемую Г р игорианскую дату, ког
)
да вы запросите это (как только что было показано . Если вы хотите увидеть число
(
вое представление, просто используйте метод valueOf ) .
const d = new Date ( ) ;
console . l og ( d ) ; / / форматированная Григорианская дата с TZ
console . l og ( d . v alueOf ( ) ) ; / / миллисекунды начиная с Эпохи Unix
Созда и е объектов Da te
н
Объект Date может быть создан четырьмя способами. Без аргументов (как мы
уже видели), возвращается просто объект Da te, представляющий текущую дату. Мы
можем также предоставить строку, которую JavaScript попытается проанализировать,
или мы можем задать конкретную (локальную) дату в миллисекундах. Вот примеры.
1 1 все дальнейшее интерпретируется с учетом местного времени
new Date ( ) ; / / текущая дата
254 Глава 1 5 . Дата и время

