代码之家  ›  专栏  ›  技术社区  ›  nikksan

我怎样才能有时间显示“昨天”而不是“一天前”?

  •  3
  • nikksan  · 技术社区  · 6 年前

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

    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 回复  |  直到 6 年前
        1
  •  4
  •   Praveen Kumar Purushothaman Daniel Dewhurst    6 年前

    这些可以在翻译文件中找到。你可以在家里换 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>
        2
  •  0
  •   Tin Huynh    3 年前
    moment.updateLocale("en-gb", {
      relativeTime: {
        future: "in %s",
        past: "%s",
        s: "a few seconds ago",
        ss: "%d seconds ago",
        m: "a minute ago",
        mm: "%d minutes ago",
        h: "an hour ago",
        hh: "%d hours ago",
        d: "yesterday",
        dd: "%d days ago",
        M: "a month ago",
        MM: "%d months ago",
        y: "a year ago",
        yy: "%d years ago",
      },
    });
    

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