Moment 时间显示午夜,_i 和 _d 属性不匹配
Moment time shows midnight, _i and _d properties do not match
我在我的 Web 应用程序中使用 moment.js 时遇到了一个错误,即许多对象的时间在某个时候变为午夜。我仍在尝试寻找是什么触发了此更改,但看着其中一个时刻,我注意到 _i 属性 显示了原始/正确时间。
下面是其中一个时刻的开发者控制台输出,mm
_d: Thu Apr 02 2015 00:00:00 GMT-0400 (EDT)
_f: "YYYY-MM-DDTHH:mm:ssZ"
_i: "2015-04-02T12:10:43-04:00"
_isAMomentObject: true
_isUTC: false
_isValid: true
_locale: Locale
_pf: Object
_tzm: -240
mm.toISOString()
// "2015-04-02T04:00:00.000Z"
moment(mm._i).toISOString()
// "2015-04-02T16:10:43.000Z"
_i代表什么,为什么不匹配字符串输出?
原来这个错误是由我的两个错误假设共同造成的
- 调用
startOf()
改变了我没有意识到的时刻
- 我正在使用的不可变数据结构忽略了具有自定义原型的对象,因此对象是可变的
结果是应用程序的另一部分能够改变我预期不可变的时刻
为了回答我的问题,我发现了以下内容
_i
是moment对象最初创建时的输入,并没有出现变化
_d
是一个 Date
对象,表示任何突变后的日期值
mm = moment("2015-04-02T12:10:43-04:00")
mm._i // "2015-04-02T12:10:43-04:00"
mm._d // Thu Apr 02 2015 12:10:43 GMT-0400 (EDT)
mm.startOf('day')
mm._i // "2015-04-02T12:10:43-04:00"
mm._d // Thu Apr 02 2015 00:00:00 GMT-0400 (EDT)
我在我的 Web 应用程序中使用 moment.js 时遇到了一个错误,即许多对象的时间在某个时候变为午夜。我仍在尝试寻找是什么触发了此更改,但看着其中一个时刻,我注意到 _i 属性 显示了原始/正确时间。
下面是其中一个时刻的开发者控制台输出,mm
_d: Thu Apr 02 2015 00:00:00 GMT-0400 (EDT)
_f: "YYYY-MM-DDTHH:mm:ssZ"
_i: "2015-04-02T12:10:43-04:00"
_isAMomentObject: true
_isUTC: false
_isValid: true
_locale: Locale
_pf: Object
_tzm: -240
mm.toISOString()
// "2015-04-02T04:00:00.000Z"
moment(mm._i).toISOString()
// "2015-04-02T16:10:43.000Z"
_i代表什么,为什么不匹配字符串输出?
原来这个错误是由我的两个错误假设共同造成的
- 调用
startOf()
改变了我没有意识到的时刻 - 我正在使用的不可变数据结构忽略了具有自定义原型的对象,因此对象是可变的
结果是应用程序的另一部分能够改变我预期不可变的时刻
为了回答我的问题,我发现了以下内容
_i
是moment对象最初创建时的输入,并没有出现变化
_d
是一个 Date
对象,表示任何突变后的日期值
mm = moment("2015-04-02T12:10:43-04:00")
mm._i // "2015-04-02T12:10:43-04:00"
mm._d // Thu Apr 02 2015 12:10:43 GMT-0400 (EDT)
mm.startOf('day')
mm._i // "2015-04-02T12:10:43-04:00"
mm._d // Thu Apr 02 2015 00:00:00 GMT-0400 (EDT)