【问题标题】:Moment.js show diff between 2 datesMoment.js 显示两个日期之间的差异
【发布时间】:2023-03-26 02:27:02
【问题描述】:

我使用moment(d, "YYYYMMDD").fromNow(); 来获取现在日期和某个日期之间的差异,但我想不使用字符串“几天前”。

相反,我想获得“7d”(7m、1s 等)。

我该怎么做?

【问题讨论】:

    标签: momentjs


    【解决方案1】:

    Moment.diff 正是这样做的。

    var a = moment([2007, 0, 29]);
    var b = moment([2007, 0, 28]);
    a.diff(b) // 86400000
    

    你可以指定一个单位:

    var a = moment([2007, 0, 29]);
    var b = moment([2007, 0, 28]);
    a.diff(b, 'days') // 1
    

    【讨论】:

    • 美丽。如果你把.diff(读成减号-,你也知道是负数还是正数。
    【解决方案2】:

    如果您只想获取两个日期之间的差异而不是相对字符串,请使用 diff 函数。

    var date  = moment("20170101", "YYYYMMDD");
    var date7 = moment("20170108", "YYYYMMDD");
    var mins7 = moment("20170101 00:07", "YYYYMMDD HH:mm");
    var secs1 = moment("20170101 00:00:01", "YYYYMMDD HH:mm:ss");
    
    console.log(date7.diff(date, "days")    + "d"); // "7d"
    console.log(mins7.diff(date, "minutes") + "m"); // "7m"
    console.log(secs1.diff(date, "seconds") + "s"); // "1s"
    

    【讨论】:

      【解决方案3】:

      var before = moment('2017.02.12 09:00','YYYY.MM.DD HH:mm');
      var now = moment();
      
      console.log(
        moment(now - before)
        .format('D[ day(s)] H[ hour(s)] m[ minute(s)] s[ second(s) ago.]')
      );
      <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

      【讨论】:

      • 当心!这个解决方案是错误的。结果每个月都会溢出。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-10
      • 2012-04-18
      • 2018-05-09
      • 2017-12-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多