【发布时间】:2016-05-27 10:23:06
【问题描述】:
我想了解 Moment JS 对其 moment 对象的初始化。
例如,如果我想为日期和时间创建一个时刻: 2000 年 4 月 1 日凌晨 3:25:00,UTC/GMT 的 UTC 偏移量为 +8 小时。
我在一个 javascript 对象中表示它:
var obj = {
year: 2000,
month: 4, //APRIL
day: 1,
hour: 3,
minute: 25,
second: 0,
utcOffset: 8 //8 hours from UTC
}
然后我创建了一个方便的函数,我可以用它来用 moment js 创建一个时刻:
var makemoment = function(obj){
var m = moment([obj.year, obj.month - 1, obj.day, obj.hour, obj.minute, obj.second, 0]).utcOffset(obj.utcOffset);
return m;
}
当我使用这个功能来创造时刻... 例如
var result = moment(obj);
如果我检查上面的结果对象,我可以看到它有一个属性 _d
我希望有一个值,例如:
_d Date {Sat Apr 01 2000 03:25:00 GMT+0800 (HKT)}
但实际值对我来说没有意义,因为我指定时间是 3:25:00 并且它已经是 GMT +0800,所以不需要在时间上增加 8 小时......
_d Date {Sat Apr 01 2000 11:25:00 GMT+0800 (HKT)}
尽管有这个 _d 值,但如果我 console.log(result)
我得到了正确的预期日期:
2000-04-01T03:25:00+08:00
如果我现在调用 utc 方法。例如result.utc()
如果我再次检查该对象,我可以看到现在 _d 已更改为我最初的预期值:
_d Date {Sat Apr 01 2000 03:25:00 GMT+0800 (HKT)}
但是,现在如果我这样做result.format()
我得到了正确的 UTC 日期和时间:
2000-03-31T19:25:00+00:00
我这里有什么不明白吗???? Moment.js中的_d值是怎么用的??? 我应该忽略 _d 值,因为它只是 Moment.js 内部的东西???
我创建了 JSFiddle 来说明我的观点...
【问题讨论】:
标签: javascript time momentjs utc