Moment: startOf('день') дает мне вчерашний день

Созданный на 3 апр. 2016  ·  3Комментарии  ·  Источник: moment/moment

Выполнение следующего кода в версии Chrome 49.0.2623.110 м
image
Может быть, связано с # 2982?

Самый полезный комментарий

Поскольку вы используете функцию moment() для создания своей даты, moment предполагает, что вы обрабатываете локальную дату. Таким образом, функция .startOf() перемещает вас к началу вашей локальной даты.
Однако .toISOString() выводит дату в формате UTC, на что указывает Z в конце строк.

Судя по вашему профилю на github, вы находитесь в Израиле. Итак, приспособившись к часовому поясу Азии/Иерусалима и поместив все это в код:

//the time now in Jerusalem
moment().format()
"2016-04-03T14:48:10+03:00"

//start of day in Jersualem
moment().startOf('day').format()
"2016-04-03T00:00:00+03:00"

//start of day as ISO string is three hours before start of day in Jerusalem
moment().startOf('day').toISOString()
"2016-04-02T21:00:00.000Z"

Вам нужно либо полностью работать по местному времени и использовать .format() для получения желаемого результата, либо полностью работать в формате UTC.

Этот раздел документов может быть полезен:
http://momentjs.com/guides/#/parsing/local-utc-zone/

Все 3 Комментарий

Поскольку вы используете функцию moment() для создания своей даты, moment предполагает, что вы обрабатываете локальную дату. Таким образом, функция .startOf() перемещает вас к началу вашей локальной даты.
Однако .toISOString() выводит дату в формате UTC, на что указывает Z в конце строк.

Судя по вашему профилю на github, вы находитесь в Израиле. Итак, приспособившись к часовому поясу Азии/Иерусалима и поместив все это в код:

//the time now in Jerusalem
moment().format()
"2016-04-03T14:48:10+03:00"

//start of day in Jersualem
moment().startOf('day').format()
"2016-04-03T00:00:00+03:00"

//start of day as ISO string is three hours before start of day in Jerusalem
moment().startOf('day').toISOString()
"2016-04-02T21:00:00.000Z"

Вам нужно либо полностью работать по местному времени и использовать .format() для получения желаемого результата, либо полностью работать в формате UTC.

Этот раздел документов может быть полезен:
http://momentjs.com/guides/#/parsing/local-utc-zone/

:лицо-ладонь:

Спасибо за подробное объяснение.

Я думаю, что я объяснил это как минимум дважды на этой неделе между здесь и переполнением стека. Вы не единственный человек, который находится в замешательстве. Я собираюсь обновить документы, чтобы сделать часть UTC более понятной.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги