Во время записи Продолжительность времени округления разницы от конца дня до целых часов в моментах? , я запустил несколько команд в консоли 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 действительно не конец дня?