Comparing two times with Moment JS

后端 未结 4 902
[愿得一人]
[愿得一人] 2020-11-28 09:11

I have a problem that requires me to take two times in 12 hour format and compare them, we have moment.js included in our project and we initially thought it would be as tri

相关标签:
4条回答
  • 2020-11-28 09:37

    8:45am and 9:00am are invalid dates

    var beginningTime = moment('8:45am');
    var endTime = moment('9:00am');
    console.log(beginningTime.isValid(), endTime.isValid()) // FALSE
    

    You should use a valid format: http://momentjs.com/docs/#/parsing/string/

    And they suggest that for consistent results, should use http://momentjs.com/docs/#/parsing/string-format/

    Eg.

    moment("2010-10-20 4:30", "YYYY-MM-DD HH:mm"); // parsed as 4:30 local time
    
    0 讨论(0)
  • 2020-11-28 09:41

    You should just open the console and try doing this manually: moment("8:45am").toDate()

    It gives you Invalid Date, which is why you're not getting expected results. Whereas "2014-05-15 08:45" gives you a date.

    0 讨论(0)
  • 2020-11-28 09:45

    As per documentation you are declaring moment variable incorrectly check allowed formates

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

    Instead of it you can use

    var beginningTime = moment({
      h: 8,
      s: 45
    });
    var endTime = moment({
      h: 9,
      s: 0
    });
    console.log(beginningTime.isBefore(endTime)); //true
    <script src="https://cdn.jsdelivr.net/momentjs/2.13.0/moment.min.js"></script>

    0 讨论(0)
  • 2020-11-28 09:57

    If you are always dealing with the time in h:mma format, you can specify it when parsing...

    var beginningTime = moment('8:45am', 'h:mma');
    var endTime = moment('9:00am', 'h:mma');
    console.log(beginningTime.isBefore(endTime)); // true
    console.log(beginningTime.toDate()); // Mon May 12 2014 08:45:00
    console.log(endTime.toDate()); // Mon May 12 2014 09:00:00
    <script src="https://cdn.jsdelivr.net/momentjs/2.13.0/moment.min.js"></script>

    It will use today as the date, so it won't work if you are spanning different days.

    JSFiddle

    0 讨论(0)
提交回复
热议问题