在编写Rounding time duration of difference to end of day to whole hours in momentjs?时,我在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会假设我输入“天真”时输入本地日期时间,并将其存储在._d
中时将其转换为UTC。
好的,我猜是这样,但是让我感到困惑的是在“ 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-17 21:00:00”,然后我得到2017-02-17T22:59:59.999Z
,即时间部分为“ 22:59:59”,根本看不到一天结束了!!
然后,如果我忘记了这一点,那么我使用.endOf('day')
的代码(例如,在链接文章中)将按预期工作。
有人能解释一下这是怎么工作的逻辑吗-即使22:59:59并不是一天的结束?