【问题标题】:How to set time with date in momentjs如何在momentjs中使用日期设置时间
【发布时间】:2017-07-19 19:51:47
【问题描述】:

momentjs 是否提供任何选项来设置特定时间的时间?

var date = "2017-03-13";
var time = "18:00";

var timeAndDate = moment(date).startOf(time);

console.log(timeAndDate);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

【问题讨论】:

  • moment(date+' '+time)?
  • 现在可能是read the docs on parsing的好时机
  • @BenM 不工作
  • @chazsolo 我去看看
  • @MuhammedAthimannil 它正在工作,请看我的回答;重要的是,工作的 sn-p。

标签: javascript date datetime time momentjs


【解决方案1】:

今天的日期与不同的时间:

moment(12, "HH")

【讨论】:

    【解决方案2】:

    由于这会在 google 搜索结果中弹出,所以 moment 现在有一个 set(unit, value) 函数,您可以通过以下方式实现:

    const hours = 15;
    const minutes = 32;
    var date = moment("1946-05-21").set("hour", hours).set("minute", minutes);
    

    或作为组合功能

    var date = moment("1946-05-21").set({"hour": 15, "minute": 32});
    

    注意:set 函数要求值是整数类型

    【讨论】:

      【解决方案3】:
      var timeAndDate = moment(date).add(moment.duration(time))
      

      当您为日期和时间分隔字符串时,您可以先将其解析为日期,然后将其解析为持续时间,然后添加它们。这应该创建具有正确日期和时间的moment

      【讨论】:

      • 请编辑您的答案并通过解释您的答案如何解决问题来添加一些上下文,而不是发布仅代码的答案。 From Review
      • 没有给出准确的结果。
      【解决方案4】:

      如果有人想知道如何在日期对象上设置时间,我是这样做的:

      const dateObj = new Date();
      
      const dateStr = dateObj.toISOString().split('T').shift();
      const timeStr = '03:45';
      
      const timeAndDate = moment(dateStr + ' ' + timeStr).toDate();
      

      【讨论】:

        【解决方案5】:

        Moment.js 不提供通过字符串设置现有时刻的时间的方法。为什么不将两者连接起来:

        var date = "2017-03-13";
        var time = "18:00";
        
        var timeAndDate = moment(date + ' ' + time);
        
        console.log(timeAndDate);
        <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

        或者,您可以使用两个 Moment 对象并使用 getter 和 setter。虽然是一个更冗长的选项,但如果您不能使用连接,它可能会很有用:

        let dateStr = '2017-03-13',
            timeStr = '18:00',
            date    = moment(dateStr),
            time    = moment(timeStr, 'HH:mm');
        
        date.set({
            hour:   time.get('hour'),
            minute: time.get('minute'),
            second: time.get('second')
        });
        
        console.log(date);
        <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

        【讨论】:

        • 如果使用不同的时区,连接不是一个可行的选择。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-23
        • 1970-01-01
        • 2019-03-05
        • 1970-01-01
        • 1970-01-01
        • 2013-10-20
        相关资源
        最近更新 更多