I use the am-time-ago
directive to show a relative timestamp:
<span am-time-ago="publishedAt"></span>
By default, it is formatted as "a day ago", "5 days ago", etc.
How could I change the formatting to be "1d", "5d", "3h", etc?
Nix
You could customize humanize, somewhere in your config or app start.
moment.lang('en', {
relativeTime : {
future: "in %s",
past: "%s ago",
s: "%d seconds",
m: "1m",
mm: "%dm",
h: "1h",
hh: "%dh",
d: "1d",
dd: "%dd",
M: "1m",
MM: "%dm",
y: "1y",
yy: "%dy"
}
});
x = new moment();
z = x.clone().add('hours',1);
x.from(z, false);
>> 1h ago
x.from(z, true) //no ago
>> 1h
Docs on realtiveTime
Example: http://jsbin.com/satohazu/1/edit
The accepted answer by Nix works, but is deprecated by now. Anybody who stumbles across this discussion (like I did) should use moment.updateLocale(locale)
.
moment.updateLocale('en', {
relativeTime : {
future: "in %s",
past: "%s ago",
s: "%d seconds",
m: "1m",
mm: "%dm",
h: "1h",
hh: "%dh",
d: "1d",
dd: "%dd",
M: "1m",
MM: "%dm",
y: "1y",
yy: "%dy"
}
});
Details at https://momentjs.com/docs/#/customization/relative-time/
来源:https://stackoverflow.com/questions/22964767/how-to-format-angular-moments-am-time-ago-directive