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

时间:2016-07-02 09:58:39

标签: javascript date momentjs

  1. 假设我有一个日期字符串2015-02-01 - (2015年2月1日)
  2. 今天我们有2016-07-02(2016年7月2日)
  3. 我们可以很容易地看到旧日期发生在大约1年 5个月 1天前。

    我希望使用Moment.js获得相对结果,所以我做了:

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

    很遗憾library rounds结果我得到a year ago,明年将近一半的时间被忽略(缺少5个月和1天)。

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

1 个答案:

答案 0 :(得分:5)

根据您想要的方向,您可以选择几个选项。可能最直接的是使用持续时间而不是.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

等等。您可以根据需要格式化。

如果您想要更高级的持续时间格式,可以查看this plugin