【问题标题】:Moment JS not saving in utc time and then not returning localMoment JS 不保存 utc 时间,然后不返回本地
【发布时间】:2018-10-08 23:29:13
【问题描述】:

我的应用程序的时间记录功能出现问题..

所以我有一个按钮,基本上说开始,它调用一个函数来存储按下按钮的时间,就像这样..

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
...

【问题讨论】:

    标签: javascript momentjs


    【解决方案1】:

    当我在 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
    

    由于 moment 返回自身的实例,因此您需要使用 format() 方法将响应格式化为纯字符串。

    【讨论】:

    • 请查看我的编辑,当我 console.log(moment.utc()) 我得到当地时间但如果我格式化它,我得到 utc 时间
    • 如果您 console.log moment 没有先格式化它,您将创建 moment 实例并将其附加到包含 moment 对象的内存空间。在这里看到:jsbin.com/zifefaqose/edit?html,console。为了实际返回 UTC 时间,您需要格式化响应。
    • 这允许 Moment 继续使用该对象,如果您稍后需要对其进行其他更改。当您想要返回您计算的内容时,您只需使用 format() 将 moment 对象转换为字符串。请参阅此处的文档momentjs.com/docs/#/parsing/utc
    猜你喜欢
    • 2017-07-22
    • 2019-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-27
    • 2020-11-06
    • 1970-01-01
    • 2021-03-09
    相关资源
    最近更新 更多