【问题标题】:MomentJS change 'a day ago' to '1d'MomentJS 将“一天前”更改为“1d”
【发布时间】:2017-09-07 13:11:38
【问题描述】:

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

有没有办法将其格式化为显示 30d 之类的内容?

【问题讨论】:

标签: javascript frontend momentjs


【解决方案1】:

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

被视为一个月的最少天数。

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

如果您想从fromNow 输出中删除后缀(例如in / ago),您可以简单地使用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>

【讨论】:

  • 如果您想以 Moment.js 的方式进行操作,这是一个更好的答案。
  • 同意,这将是 Moment.js 的方式。
【解决方案2】:

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);

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

【讨论】:

    【解决方案3】:

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

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

    上面的代码从指定的目标日期获取你的天数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-28
      • 1970-01-01
      • 2018-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-09
      • 1970-01-01
      相关资源
      最近更新 更多