Логика кодирования свойства momentjs ._d на час раньше, особенно в контексте .endOf ('day')? - PullRequest
0 голосов
/ 28 декабря 2018

Во время записи Продолжительность времени округления разницы от конца дня до целых часов в моментах? , я запустил несколько команд в консоли Firefox, и я только заметил это: когда я указываю «наивную» датубез какого-либо часового пояса конечная дата, зарегистрированная в свойстве ._d, на один час раньше:

var m1 = moment('2017-02-17 21:00:00');
<- undefined

m1
<- Object { _isAMomentObject: true, _i: "2017-02-17 21:00:00", \
_f: "YYYY-MM-DD HH:mm:ss", _isUTC: false, _pf: Object, _locale: Object, _a: Array[7], \
_d: Date 2017-02-17T20:00:00.000Z, \
_isValid: true, _z: null }

Итак, я запрашиваю '2017-02-17 21:00:00', язаписать 2017-02-17T20:00:00.000Z внутри, в свойстве ._d.Сейчас я нахожусь в CET, то есть в формате UTC + 0100, поэтому я предполагаю, что moment.js предполагает, что я ввожу локальное время и дату, когда я нахожу «наивное», и преобразует его в UTC при сохранении в ._d.

Это нормально, я думаю, но то, что меня смутило, это в контексте `endOf ('day'):

var m2 = moment(m1).endOf('day');
<- undefined

m2
<- Object { _isAMomentObject: true, _i: "2017-02-17 21:00:00", \
_f: "YYYY-MM-DD HH:mm:ss", _isUTC: false, _pf: Object, _locale: Object, _z: null, _a: Array[7], \
_d: Date 2017-02-17T22:59:59.999Z, \
_isValid: true }

Поэтому я прошу конец дня для" 2017-02-1721:00:00 ", и я получаю 2017-02-17T22:59:59.999Z, то есть часть времени равна" 22:59:59 ", которую я просто не могу видеть как конец дня?!

Опять же,если я забуду об этом, код, который я использую .endOf('day') (скажем, в связанном посте), работает как положено.

Может ли кто-нибудь объяснить логику того, как это работает - даже если 22:59:59 действительно не конец дня?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...