【问题标题】:Add hours minutes with the format hh:mm using moment使用 moment 以 hh:mm 格式添加小时分钟
【发布时间】:2019-09-27 00:27:11
【问题描述】:

我正在使用时刻库​​,从前端我在HH:mm 获得时间我需要使用时刻将小时和分钟添加到当前时间。

假设我从前端得到05:30,我需要添加到当前的UTC时间。如何使用 momentjs 做到这一点?

我试过了,但没用

moment().add('05:30', 'HH:mm')

【问题讨论】:

    标签: javascript timezone momentjs


    【解决方案1】:

    尝试使用

    moment.add(5,'hours').add(30,'minutes').format('HH:mm')

    moment().add({hours:5, minutes: 30}).format('HH:mm')

    【讨论】:

      【解决方案2】:

      您可以使用moment.duration(String) 和使用add(Duration)'05:30' 创建duration

      正如 moment duration 文档所述,'05:30'moment.duration(String) 的有效输入:

      2.1.0 开始,moment 支持解析 ASP.NET 样式时间跨度。支持以下格式。

      格式是用冒号分隔的小时、分钟、秒字符串,例如23:59:59。天数可以用点分隔符作为前缀,例如7.23:59:59。也支持部分秒23:59:59.999

      这是一个现场样本:

      const result = moment().add( moment.duration('05:30') );
      console.log( moment().format() );
      console.log( result.format() );
      <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>

      【讨论】:

      • :O...嗯,这很聪明!听起来这是最佳做法。
      • 嗨 VincenzoC 我有这种格式0530。现在它不工作了。有什么想法吗?
      • 由于没有冒号(格式为小时、分钟、秒字符串用冒号分隔),您必须添加自己的逻辑来根据您的需要翻译输入。 (例如var input = '0530'; var output = str.substring(0, 2) + ':' + str.substring(2),但可能有很多极端情况)
      【解决方案3】:
      var t = '05:30';
      var hours = parseInt(t.substr(0,2));
      var minutes = parseInt(t.substr(3,5));
      moment().add(hours,'hours').add(minutes,'minutes');
      

      【讨论】:

        【解决方案4】:

        Moment 拥有.add 属性

        moment().add(1, 'day')

        参考:http://momentjs.com/docs/#/manipulating/add/

        用于转换为特定格式:

        moment().add({hours:5, minutes: 30}).format('HH:mm')
        

        【讨论】:

        • @Profer 如果您已经获得任何格式的时间,那么在添加任何持续时间后,您将获得相同的格式。或者您可以先添加时长,然后转换为特定格式。
        • @VLAZ 是的,我错过了。更新答案
        【解决方案5】:

        编辑:上面的@VincenzoC 提供了我个人认为的最佳实践。检查此答案仅作为他的替代答案。

        只要做:

        moment().add({
           hours: 5,
           minutes: 30
        });
        

        官方文档建议:http://momentjs.com/docs/#/manipulating/add/

        要么使用上面的对象字面量,要么使用链接。

        我无法摆脱那个字符串,只需通过拆分获得小时和分钟:

        let [hours, minutes] = '05:30'.split(':').map(Number);
        console.log(hours);
        console.log(minutes);

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-08-08
          • 1970-01-01
          • 1970-01-01
          • 2017-04-25
          • 2014-01-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多