Get the days, hours and minutes in Moment.js

前端 未结 4 827
情话喂你
情话喂你 2020-12-03 13:24

So This is my first time using Moment.js and I encountered the following problem, so I have this following dates:

now: 2017-01-26T14:21:22+0000
expiration: 2         


        
相关标签:
4条回答
  • 2020-12-03 13:42

    this will give you the right values and remove the headache of manual calculations

    let expiration = "2017-01-29T17:24:22+0000"
    const now = moment();
    const exp = moment(expiration);
    
    console.log(exp.format());
    
    days = exp.diff(now, 'days');
    hours = exp.subtract(days, 'days').diff(now, 'hours');
    minutes = exp.subtract(hours, 'hours').diff(now, 'minutes');
    
    console.log(days, hours, minutes)
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

    note that the substract operations will mutate the original exp value, so don't go passing it around expecting it to be the original date

    0 讨论(0)
  • 2020-12-03 13:49

    For more information check the documentation https://momentjs.com/docs/#/displaying/difference/

    var now = moment()
    var exp = moment().add(1,'days')
    var days = exp.diff(now, 'days')
    var months = exp.diff(now, 'months')
    var years = exp.diff(now, 'years', true) //float number
    
    console.log(now,exp,days, months, years)
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

    0 讨论(0)
  • 2020-12-03 13:50

    Try my solution. I think that is it:

      var now = moment("2017-01-26T14:21:22+0000");
      var expiration = moment("2017-01-29T17:24:22+0000");
      var minsAverage = expiration.diff(now, "minutes");
    
      var min = parseInt(minsAverage % 60);
      var hours = parseInt(minsAverage / 60);
      var days = parseInt(hours / 24);
      hours = hours - 24*days;
    
    0 讨论(0)
  • 2020-12-03 13:58

    MomentJS can calculate all that for you without you doing any logic.

    • First find the difference between the two moments
    • Express it as a Duration
    • Then display whichever component .days(), .hours() of the duration that you want.

    Note: You can also express the entire duration .asDays(), .asHours() etc if you want.

    const now = moment("2017-01-26T14:21:22+0000");
    const expiration = moment("2017-01-29T17:24:22+0000");
    
    // get the difference between the moments
    const diff = expiration.diff(now);
    
    //express as a duration
    const diffDuration = moment.duration(diff);
    
    // display
    console.log("Days:", diffDuration.days());
    console.log("Hours:", diffDuration.hours());
    console.log("Minutes:", diffDuration.minutes());
    <script src="https://momentjs.com/downloads/moment.js"></script>

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