时刻js显示2个日期之间的差异

Vah*_*yan 22 momentjs

我用来moment(d, "YYYYMMDD").fromNow();在日期和某个日期之间获得差异,但我想在几天前没有字符串.

相反,我想得到"7d"(7m,1s等).

我怎样才能做到这一点?

谢谢

cod*_*rsl 34

如果你只想获得两个日期而不是相对字符串之间的差异,只需使用diff函数.

var date  = moment("20170101", "YYYYMMDD");
var date7 = moment("20170108", "YYYYMMDD");
var mins7 = moment("20170101 00:07", "YYYYMMDD HH:mm");
var secs1 = moment("20170101 00:00:01", "YYYYMMDD HH:mm:ss");

console.log(date7.diff(date, "days")    + "d"); // "7d"
console.log(mins7.diff(date, "minutes") + "m"); // "7m"
console.log(secs1.diff(date, "seconds") + "s"); // "1s"
Run Code Online (Sandbox Code Playgroud)


Bro*_*row 10

Moment.diff正是如此.

var a = moment([2007, 0, 29]);
var b = moment([2007, 0, 28]);
a.diff(b) // 86400000
Run Code Online (Sandbox Code Playgroud)

您可以指定一个单位:

var a = moment([2007, 0, 29]);
var b = moment([2007, 0, 28]);
a.diff(b, 'days') // 1
Run Code Online (Sandbox Code Playgroud)


Bul*_*ral 9

var before = moment('2017.02.12 09:00','YYYY.MM.DD HH:mm');
var now = moment();

console.log(
  moment(now - before)
  .format('D[ day(s)] H[ hour(s)] m[ minute(s)] s[ second(s) ago.]')
);
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

  • 小心!这个解决方案是错误的。结果每个月都溢出。 (8认同)