MomentJS'一天前'更改为'1d'

时间:2017-09-07 13:11:39

标签: javascript frontend momentjs

我有一个JSON格式的日期,比如:2017-08-01T23:28:56.782Z 我已经给它fromNow()显示相对日期a month ago

有没有办法对其进行格式化以显示30d

之类的内容

3 个答案:

答案 0 :(得分:2)

您可以使用relativeTimeThreshold自定义时刻相对时间的阈值。在您的情况下,您可以更新代表的d属性:

  

每月最少考虑的天数。

如果您想显示d而非天数,则可以使用updateLocale方法使用自定义relativeTime属性。

如果您想从fromNow输出中删除后缀(例如在/中),您只需使用fromNow(true)

这是一份工作样本:

var m = moment('2017-08-01T23:28:56.782Z');
console.log(m.fromNow());

moment.relativeTimeThreshold('d', 30*12);
moment.updateLocale('en', {
  relativeTime : {
    dd: "%dd",
  }
});

console.log(m.fromNow(true));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

答案 1 :(得分:1)

我想我可能会有点过时,因为距目标日期还有36天。

var a = moment(); // today
var b = moment("2017-08-01T23:28:56.782Z"); // target date
var diffInDays = a.diff(b, 'days') + 'd'; // 36d;

以上代码从指定的目标日期开始计算您的日期。

答案 2 :(得分:0)

1。 %d 将打印无数字。
2. “”将显示Sting Literal。例如:秒,s,d,y,w。

输出: 1d,1w,1y,

const TIME_ZONE = -1 * new Date().getTimezoneOffset() / 60;

 this.getDateFrom("2018-02-22 14:27:56");

 getDateFrom(givenDate) {
    return moment(givenDate)
      .add(TIME_ZONE, "hours")
      .fromNow(
        updateLocale("en", {
          relativeTime: {
            future: "in %s",
            past: "%s ",
            s: "sec",
            m: "%d m",
            mm: "%d m",
            h: "%d h",
            hh: "%d h",
            d: "%d d",
            dd: "%d d",
            M: "a mth",
            MM: "%d mths",
            y: "y",
            yy: "%d y"
          }
        })
      );
  }

其他方式

fromNow(true) :true会修剪您的格式(1周前)。

return moment(givenDate)
      .add(TIME_ZONE, "hours")
      .fromNow(true);

输出:一天,一周,一年,