来自文档:
"要获取当前日期和时间,只需拨打moment()
,无需参数。
var now = moment();
这与调用moment(new Date())
基本相同。
注意:从版本2.14.0开始,moment([])
和moment({})
现在也会返回。他们习惯于在2.14.0之前默认为今天开始,但这是随意的,所以它被改变了。"
我试过了两次
moment().fromNow()
以及
moment(new Date()).fromNow()
还有很多其他选择。页面刷新后,时间总是在几秒钟前显示'。
感谢您的帮助!
答案 0 :(得分:4)
fromNow
方法,将您传递给moment()
的日期与现在调用该方法时的日期和时间进行比较。
如果您没有传递任何内容或a few seconds ago
传递给new Date()
,它将始终返回moment()
,因为它会将其与当前版本的版本进行比较(可能会调用{{1} } 在某一点)。这两个日期之间的差异总是相等或几毫秒的差异。
如果您希望显示与日期的时差,则需要将比较日期传递到new Date()
,如下所示:
moment
示例输出和类似的比较方法可在文档http://momentjs.com/docs/#/displaying/fromnow/
上找到答案 1 :(得分:3)
要确切知道多少秒之前,您可以执行以下操作。
function timeAgo(time) {
moment.updateLocale('en', {
relativeTime: {
future: "in %s",
past: "%s ago",
s: number=>number + "s ago",
ss: '%ds ago',
m: "1m ago",
mm: "%dm ago",
h: "1h ago",
hh: "%dh ago",
d: "1d ago",
dd: "%dd ago",
M: "a month ago",
MM: "%d months ago",
y: "a year ago",
yy: "%d years ago"
}
});
let secondsElapsed = moment().diff(time, 'seconds');
let dayStart = moment("2018-01-01").startOf('day').seconds(secondsElapsed);
if (secondsElapsed > 300) {
return moment(time).fromNow(true);
} else if (secondsElapsed < 60) {
return dayStart.format('s') + 's ago';
} else {
return dayStart.format('m:ss') + 'm ago';
}
},
结果将是
2s前
答案 2 :(得分:0)
您正在使用moment(new Date())
,它将返回now
,然后调用fromNow()
。因此,时差总是为0秒(或几毫秒),以便显示出来的内容。
你应该传递一些日期,如:
moment("12-25-1995", "MM-DD-YYYY");
然后在其上调用fromNow()
,以便在该日期和now
之间获得时差。