【问题标题】:Getting the value from momentJS subtract without a time zone or offset (GMT +0000)从 momentJS 中获取值减去没有时区或偏移量 (GMT +0000)
【发布时间】:2017-11-28 20:49:34
【问题描述】:

我希望使用 momentJS 生成过去 30 天的日期 - 这很容易,我只使用以下

const date30DaysPast = moment().utc().subtract(30, 'days').toDate(); // Sun Oct 29 2017 13:23:46 GMT+0100 (CET)

这一切都很好,但是我希望返回的日期没有时区或偏移量,我希望时间为 GMT+0000 而不是高于 GMT+0100 (CET) - 例如:

2017 年 10 月 29 日星期日 13:23:46 GMT+0000

我希望强制执行此操作,因为我正在使用位于不同位置的测试服务器,而不是从本地浏览器中花费时间,我只想设置一个标准时间。我认为使用utc 方法可以做到这一点,例如我应该在我的测试中写这样的东西:

const oct4th2017 = moment.utc(new Date('October 04, 2017 11:13:00')); 

输出是

2017 年 10 月 4 日星期三 09:13:00 GMT+0000

如何在我原来的减法中删除偏移量/时区并将其设置为 GMT?我尝试过像这样包装父 utc 方法

const date30DaysPast = moment.utc(moment().utc().subtract(30, 'days').toDate());

但这不起作用。我得到了 momentJS 对象。

如果我的措辞不好或令人困惑,请提出任何建议,我将改写我的问题。

【问题讨论】:

    标签: javascript momentjs


    【解决方案1】:

    您已经有了没有时区的 moment.js 对象。但是toDate() 方法会创建一个本地 Date 对象,该对象始终具有本地时区(尽管它具有各种 UTC 方法)。

    【讨论】:

    • 我也这么想,去掉toDate()只是返回一个对象,例如Moment{_isAMomentObject: ...我只需要知道如何在不使用toDate方法的情况下获取日期的值
    • valueOf() 获取自 1970 年 1 月 1 日以来的时间戳(以毫秒为单位)
    • toISOString(),一般参见文档的Display部分。
    猜你喜欢
    • 2012-11-28
    • 1970-01-01
    • 2022-11-25
    • 2020-08-17
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多