If I use
moment().startOf("minute").fromNow();
I will get:
a few seconds ago
a minute ago
...
Is it possible to format the output like the following?
00:00 minutes ago
00:01 minutes ago
...
We now generally consider Moment to be a legacy project in maintenance mode. It is not dead, but it is indeed done.
var result = moment(someDate). format("MM/DD/YYYY HH:mm A Z");
MomentJs recently announced that the library is now deprecated. This is a big deal for the javascript community who actively downloads moment almost 15 million times a week. With that I began a journey during a Hackathon to replace moment in a core library at my company.
You can customize how moment formats relative time for you locale using updateLocale
.
Note that the docs says:
If a locale requires additional processing for a token, it can set the token as a function with the following signature. The function should return a string.
function (number, withoutSuffix, key, isFuture) {
return string;
}
In your case, you can do something like this:
var m1 = moment().subtract(5, 'm');
var m2 = moment().subtract(15, 's');
console.log(m1.fromNow());
console.log(m2.fromNow());
moment.updateLocale('en', {
relativeTime : {
future: "in %s",
past: "%s ago",
s: function (number, withoutSuffix, key, isFuture){
return '00:' + (number<10 ? '0':'') + number + ' minutes';
},
m: "01:00 minutes",
mm: function (number, withoutSuffix, key, isFuture){
return (number<10 ? '0':'') + number + ':00' + ' minutes';
},
h: "an hour",
hh: "%d hours",
d: "a day",
dd: "%d days",
M: "a month",
MM: "%d months",
y: "a year",
yy: "%d years"
}
});
console.log(m1.fromNow());
console.log(m2.fromNow());
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js"></script>
I'm not sure that the code above covers all the case you need, but I think that it can be a good starting point.
You can use fromNow()
method.
moment(<time>).fromNow()
moment([2007, 0, 29]).fromNow(); // 4 years ago
If you pass true
, you can get the value without the suffix.
moment([2007, 0, 29]).fromNow(); // 4 years ago
moment([2007, 0, 29]).fromNow(true); // 4 years
For more info you can refer source
I use this to display relative time. Maybe somehow it would help somebody.
const Moment = require('moment')
const _ = require('lodash')
const duration = Moment.duration(12460923,'milliseconds')
const durationAsDays = _.floor(duration.asDays())
const durationAsHours = _.floor(duration.subtract( durationAsDays, 'days' ).asHours())
const durationAsMinutes = _.floor(duration.subtract( durationAsHours, 'hours' ).asMinutes())
let relativeDuration = ''
if ( durationAsDays > 0 )
relativeDuration += durationAsDays + 'd '
if ( durationAsHours > 0 )
relativeDuration += durationAsHours + 'h '
if ( durationAsMinutes > 0 )
relativeDuration += durationAsMinutes + 'm'
console.log(relativeDuration, durationAsMinutes) // 3h 27m
As I know, that's impossible using fromNow()
function. You can do the following trick:
moment()
.seconds(moment().diff(moment().startOf("minute"), 'seconds'))
.format('[00]:ss [minutes ago]');
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