【问题标题】:Convert HH:mm into Moment.js将 HH:mm 转换为 Moment.js
【发布时间】:2014-04-25 01:12:51
【问题描述】:

所以我有一些时间数据如下:

10:45 PM
11:35 PM
12:06 AM
01:34 AM

所有这些时间都在America/Los_Angeles 中,并且每次都保证在该时区的今天09:00 PM 之后。因此,午夜过后的时间将发生在明天。

有没有一种优雅的方法可以将这些时间从当前格式转换为 moment.js 对象,并将时间固定到适当的日期。

【问题讨论】:

  • 即使用户从不同的时区运行,您是否需要将这些表示为America/Los_Angeles?或者在当地时区工作是否足够好?

标签: javascript momentjs


【解决方案1】:
moment('09:00','h:mm a').format('h:mm a');

【讨论】:

    【解决方案2】:

    在 moment.js 文档中找到:

    moment('10:45 PM', 'HH:mm a')
    

    http://momentjs.com/docs/#/parsing/string-format/

    【讨论】:

    • 不,这不起作用,因为“01:00 AM”的时间将被映射到当前而不是第二天。
    • 这没有回答问题,因为它没有使用问题中提出的 America/Los_Angeles 时区
    【解决方案3】:
    function getMomentFromTimeString(str) {
      var t = moment(str, 'HH:mm A');
      // Now t is a moment.js object of today's date at the time given in str
    
      if (t.get('hour') < 22) // If it's before 9 pm
        t.add('d', 1); // Add 1 day, so that t is tomorrow's date at the same time
    
      return t;
    }
    

    【讨论】:

      【解决方案4】:

      你可以使用tz()方法:

      var date = moment().tz("America/Los_Angeles").startOf('day');
      date.hour(22);
      date.minutes(45);
      

      然后将其转换为当地时间:

      date.local().toDate();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多