Moment JS不节省UTC时间,然后不返回本地

时间:2018-10-08 23:29:13

标签: javascript momentjs

我的应用程序的时间记录功能遇到问题。

所以我有一个基本上说启动的按钮,并且调用了一个函数来存储在utc时间中按下按钮的时间,就像这样。

this.startTime = moment().utc();

现在,如果我使用console.log(this.startTime),我会得到这个..

Moment {_isAMomentObject: true, _isUTC: true, _pf: {…}, _locale: Locale, _d: 
Tue Oct 09 2018 10:14:01 GMT+1100 (Australian Eastern Daylight Time), …}
_d: Tue Oct 09 2018 10:14:01 GMT+1100 (Australian Eastern Daylight Time) {}
_isAMomentObject: true
_isUTC: true
_isValid: true
...

因此它说UTC是正确的,但是时间是澳大利亚东部夏令时间10:14,应该将其转换为UTC时间吗?

现在,当我调用另一个获取存储时间的函数时,我得到的是正确的UTC时间,但以澳大利亚东部夏令时间为准

let startTime = moment(startTime);

我回来的是

_a: (7) [2018, 9, 8, 23, 5, 32, 774]
_d: Mon Oct 08 2018 23:05:32 GMT+1100 (Australian Eastern Daylight Time) {}
_f: "YYYY-MM-DDTHH:mm:ss.SSSS"
_i: "2018-10-08T23:05:32.774"
_isAMomentObject: true
_isUTC: [ZoneTask]
_isValid: true
...

我不确定自己在做什么错。.

编辑

如果我console.log(moment.utc()。format())我得到了这个日期字符串

2018-10-08T23:54:23Z

但是如果我console.log(moment.utc())我得到了这个日期对象

Moment {_isAMomentObject: true, _isUTC: true, _pf: {…}, _locale: Locale, _d: 
Tue Oct 09 2018 10:56:56 GMT+1100 (Australian Eastern Daylight Time), …}
_d: Tue Oct 09 2018 10:56:56 GMT+1100 (Australian Eastern Daylight Time) {}
_isAMomentObject: true
_isUTC: true
_isValid: true
...

1 个答案:

答案 0 :(得分:0)

当我使用以下命令在Node.js中运行Moment 2.22.2时:

var startTime = moment.utc()
console.log(startTime);
// Returns moment.utc("2018-10-08T23:36:43.363+00:00")
console.log(moment(startTime));
// Returns moment.utc("2018-10-08T23:36:43.363+00:00")
console.log(moment(startTime).format());
// Returns 2018-10-08T23:45:43Z

自从时刻返回其自身的一个实例以来,您需要使用format()方法来格式化对纯字符串的响应。