为什么moment.js在分配给变量时会给出不同的结果?

时间:2017-01-09 20:45:26

标签: javascript momentjs

我已经调试了一段时间了,现在仍然无法解决这个问题。 明确了解_d中的时间与_i中的时间的差异。为什么?

var date = new Date('Fri, 06 Jan 2017 21:30:00 -0000')
const momentDate = moment(date)
console.log(`momentDate: `, momentDate);
console.log(`moment(date): `, moment(date));

enter image description here

1 个答案:

答案 0 :(得分:0)

因此导致问题的原因是我有一个反应组件将值覆盖到startOf('day')。如果您正在使用片刻将流入应用程序的所有字符串日期转换为时刻对象,如果遇到错误,请务必查看您的组件,而不仅仅是API调用的convertToMoment按摩功能。< / p>

更重要的是,直到3.0时刻,所有时刻的物体都是可变的,所以如果你这样做:

var a = moment()
var b = a.startOf('day')
console.log(a.format('LLL')) // January 22, 2017 12:00 AM
console.log(b.format('LLL')) // January 22, 2017 12:00 AM

解决此问题的唯一方法是:

// use the cool `frozen-moment` package (which is basically a polyfill)
var a = moment().freeze()
var b = a.startOf('day')
console.log(a.format('LLL')) // January 22, 2017 2:17 AM
console.log(b.format('LLL')) // January 22, 2017 12:00 AM

// or type `.clone()` everytime you want to use a cool function
var a = moment()
var b = a.clone().startOf('day')
console.log(a.format('LLL')) // January 22, 2017 2:17 AM
console.log(b.format('LLL')) // January 22, 2017 12:00 AM