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:
moment([2017, 01, 05]).fromNow(); // a day ago
should be
moment([2017, 01, 05]).fromNow(); // 24 hours ago
I know it's possible to do this using .diff
and probably other similar functions and then adding the text, but is it possible to use .fromNow()
to do this?
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 usemoment.relativeTimeThreshold(unit, limit)
where unit is one ofs
,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());
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>
Note that, if you need, moment lets you customize relative time further with relativeTime
(here one of my examples) and relativeTimeRounding
method.
If you definitely want to use fromNow()
, I don't see any way other than overriding moment's built-in function. For example, you can override it to return the difference in hours as follows:
moment.fn.fromNow = function (a) {
var duration = moment().diff(this, 'hours');
return duration;
}
Then you can check that fromNow()
returns the value in hours:
console.log(moment([2017,0,6]).fromNow());
which returns:
19
Note: Tried at 19:00 :)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With