Moment.js中使用.fromNow()的相对日期-如何在几年、几个月和几天前聚在一起

Relative Date in Moment.js using .fromNow() - how to get together years, months and days ago?

本文关键字:几年 几个月 聚在一起 几天 js fromNow Moment 日期 相对      更新时间:2023-09-26
  1. 假设我有一个日期字符串2015-02-01-(2015年2月1日(
  2. 今天我们有2016-07-02(2016年7月2日(

我们可以很容易地看到,较旧的日期发生在大约1年前5个月前和1天前。

我想用Moment.js实现这样的相对结果,所以我做到了:

return moment('2015-02-01).fromNow();

不幸的是,库对结果进行了四舍五入,我得到了a year ago,其中几乎忽略了下一年的一半时间(缺少5个月零1天(。

传递给.fromNow()的唯一可用布尔参数没有任何帮助。有没有可能得到完整的相对日期,如果需要的话,我甚至可以控制到小时、分钟和秒?

根据您想要的方向,您有几个选项。可能最简单的方法是使用持续时间而不是.fromNow()

只需:

var diff = moment('2015-02-01').diff(moment(), 'milliseconds');
var duration = moment.duration(diff);

这将为您提供一个持续时间类型的即时消息,您可以从中获取大量信息。例如:

duration.years(); //-1
duration.months(); //-4
duration.days();// -30
duration.hours(); //-8

或者,如果你想要聚合的单位:

duration.asYears(); //-1.416481451250425
duration.asMonths(); //-16.997784898617585

等等。你可以随心所欲地格式化它。

如果你想要更高级的持续时间格式,你可以看看这个插件。