如何让 moment.js 显示以秒为单位的相对时间?

nal*_*zok 3 javascript time jquery datetime momentjs

以下脚本显示从现在到 2017/07/03 的相对时间。

document.write(moment("20170703 00:00:00", "YYYYMMDD hh:mm:ss").fromNow());
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdn.bootcss.com/moment.js/2.17.1/moment.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

它返回类似in 5 months, 而我期望类似的东西in 123456789 seconds

Vin*_*zoC 5

您可以使用diff指定'seconds'单位作为第二个参数来获取两个矩对象之间的秒数:

var mom = moment("20170703 00:00:00", "YYYYMMDD HH:mm:ss");
document.writeln(mom.fromNow());
document.writeln(mom.diff(moment(), 's'));
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.16.0/moment.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

如果您需要自定义时刻如何显示相对时间(例如输出fromNow()),您可以使用relativeTimeThresholdrelativeTime。这里有一个例子:

var mom = moment("20170703 00:00:00", "YYYYMMDD HH:mm:ss");
console.log(mom.fromNow());

// Change relativeTimeThreshold
moment.relativeTimeThreshold('s', 60*60*24*30*12);

moment.updateLocale('en', {
  relativeTime : {
    s: function (number, withoutSuffix, key, isFuture){
      return number + ' seconds';
    },
  }
});

console.log(mom.fromNow());
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.16.0/moment.min.js"></script>
Run Code Online (Sandbox Code Playgroud)