【问题标题】:Moment.js, Moment-timezone: input and display in eastern timezone?Moment.js,Moment-timezone:在东部时区输入和显示?
【发布时间】:2021-01-02 14:29:38
【问题描述】:

我有一个 javascript 应用程序,用户坚持认为无论应用程序用户的位置如何,他们都希望用户输入东部时间的日期/时间。它们将被发送到数据库并存储,然后在应用程序中再次显示并以东部时区显示。 所以我想使用 moment.js 和 moment-timezone,但不知道如何使它工作。 当我尝试 const objMoment = moment() 时,objMoment 似乎包含与当前时间的时间偏移。 我想获得一个时刻对象,然后是 objMoment.tz("America/New_York") 但我最终得到的时间比应有的时间少了 5 个小时。

        const objMoment = moment();
        const objEastern = objMoment.clone().tz("America/New_York");
        debugger;
          formData.SwoDate = objMoment.toDate();
        debugger;

【问题讨论】:

    标签: javascript timezone momentjs


    【解决方案1】:

    一些事情:

    • 您无需创建本地时刻并克隆它。您可以改为直接在特定时区构建时刻:

      moment.tz('America/New_York')
      
    • 由于您调用toDate(),结果将始终是代表“现在”的Date 对象。这是否来自被设置为不同时区的时刻并不重要。这是同一时间的时刻

      moment().valueOf()                       // 1600198416842
      moment.utc().valueOf()                   // 1600198416842
      moment.tz('America/New_York').valueOf()  // 1600198416842
      new Date().valueOf()                     // 1600198416842
      Date.now()                               // 1600198416842
      
    • 如果您想查看不同时区的时间,则需要改用 format 之类的函数。

      moment.utc().format()                    // "2020-09-15T19:33:36Z"
      moment.tz('America/New_York').format()   // "2020-09-15T15:33:36-04:00"
      
    • Moment 是一个遗留库。您可能应该选择一个不同的库,或者根本没有库。请阅读:Moment Project Status

    【讨论】:

      猜你喜欢
      • 2014-08-15
      • 1970-01-01
      • 1970-01-01
      • 2016-12-06
      • 2019-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-17
      相关资源
      最近更新 更多