Moment.js how to use fromNow() to return everything in hours?

前端 未结 2 1661
误落风尘
误落风尘 2020-12-03 19:30

I\'ve searching the moment.js docs and stackoverflow for a way to use the fromNow() function but returning everything in hours.

What I mean is:

2条回答
  •  盖世英雄少女心
    2020-12-03 19:44

    You can use relativeTimeThreshold to customize thresholds for moment relative time.

    As the docs says:

    duration.humanize has thresholds which define when a unit is considered a minute, an hour and so on. For example, by default more than 45 seconds is considered a minute, more than 22 hours is considered a day and so on. To change those cutoffs use moment.relativeTimeThreshold(unit, limit) where unit is one of s, m, h, d, M.

    In your case, you can increase hour thresholds to get relative days as hours. Here a working example showing time as hours from 1 hour to 26 days:

    var m1 = moment().subtract(5, 'h');
    var m2 = moment().subtract(55, 'h');
    var m3 = moment().subtract(1, 'd');
    
    // Default results
    console.log(m1.fromNow());
    console.log(m2.fromNow());
    console.log(m3.fromNow());
    
    // Change relativeTimeThreshold
    moment.relativeTimeThreshold('m', 60);
    moment.relativeTimeThreshold('h', 24*26);
    
    // Results in hours
    console.log(m1.fromNow());
    console.log(m2.fromNow());
    console.log(m3.fromNow());

    Note that, if you need, moment lets you customize relative time further with relativeTime (here one of my examples) and relativeTimeRounding method.

提交回复
热议问题