如何获得显示“昨天”而不是“一天前”的时间?

时间:2018-10-05 11:16:23

标签: javascript momentjs

我有以下代码,用于查找两个日期之间的人性化时差,问题是我不想有“一天前”,但要显示“昨天”。

function humanize(date) {
  const then = moment.utc(date); 
  
  return then.fromNow();
}

function getYesterdayAsISO() {
    var date = new Date();
    date.setDate(date.getDate()-1);
    return date.toISOString();
}

console.log(humanize(getYesterdayAsISO()));
<script src="https://momentjs.com/downloads/moment-with-locales.min.js"></script>

2 个答案:

答案 0 :(得分:4)

这些在翻译文件中找到。您可以在relativeTime in en-gb.js at Line 42中进行更改:

d : 'yesterday',

但这仍然显示为yesterday ago。您可以更改的正确选项是past

past : '%s ago',

此外,在不更改源代码的情况下,我通过注入添加了以下内容:

moment.updateLocale('en-gb', {
  relativeTime: {
    past : '%s',
    d : 'yesterday'
  }
});

上述内容可能无法在所有情况下都有效,并且应仅在当前项目中专门使用。

我在控制台中得到以下内容:

enter image description here

工作示例

moment.updateLocale('en-gb', {
  relativeTime: {
    past : '%s',
    d : 'yesterday'
  }
});

function humanize(date) {
  const then = moment.utc(date); 

  return then.fromNow();
}

function getYesterdayAsISO() {
  var date = new Date();
  date.setDate(date.getDate()-1);
  return date.toISOString();
}

console.log(humanize(getYesterdayAsISO()));
<script src="https://momentjs.com/downloads/moment-with-locales.min.js"></script>

答案 1 :(得分:0)

/membership

这是愚蠢的代码,但它解决了我的问题