【问题标题】:Date Difference, how many H D M Y have passed日期差异,已经过去了多少 H D M Y
【发布时间】:2016-08-10 13:53:03
【问题描述】:

我正在使用 JQuery 在我的网站中构建一个 Instagram 提要,并希望显示自帖子以简短形式提交以来已经过去了多长时间,例如:23H 或 2D 或 3M 或 1Y,具体取决于它的持续时间。我有我的两个日期对象,但我不知道如何计算差异并按我想要的方式显示它。

我对 JS/Jquery 还很陌生,据我所知:

var pd = new Date(postDate);
var nd = new Date();
var nd = nd.getTime();
var difference = nd-pd;

如何计算小时、天、月和年两个日期之间的差异?

谢谢。

【问题讨论】:

  • 闰年使这变得非常重要。
  • 还有不同的月份长度。

标签: javascript jquery date


【解决方案1】:

用日期做任何事情通常都很痛苦。 如果您不致力于使用该确切格式,则可以使用库来代替。

moment.js has a .fromnow() function.

timeago.js可用于定期更新页面上的元素,因此如果用户让页面保持打开几分钟,时间戳将计数。

【讨论】:

    【解决方案2】:

    您可以这样做以获取自发布以来经过的时间

    var timeDiff = Math.abs(nd.getTime() - pd.getTime());
    var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); 
    

    【讨论】:

      【解决方案3】:

      你可以这样试试。

      var pd = new Date(postDate);
      var nd = new Date();
      
      
      var Hours = nd.getHours() - pd.getHours();
      var Days  = nd.getDay() - pd.getDay();
      var Months = nd.getMonth() - pd.getMonth();
      var Years  = nd.getYear() - pd.getYear();
      

      或获得毫秒差异

      var miliseconds = (nd - pd).getTime(); //gets time  in miliseconds since 1/1/1970
      

      然后用你的逻辑来计算小时、天、月和年

      你可以看看这个Work with a time span in Javascript moments

      ar date1 = new Date("7/Nov/2012 20:30:00"); var date2 = new Date("20/Nov/2012 19:15:00");

      var diff = date2.getTime() - date1.getTime();

      var days = Math.floor(diff / (1000 * 60 * 60 * 24)); 差异 -= 天 * (1000 * 60 * 60 * 24);

      var hours = Math.floor(diff / (1000 * 60 * 60)); diff -= 小时 * (1000 * 60 * 60);

      var mins = Math.floor(diff / (1000 * 60)); 差异 -= 分钟 * (1000 * 60);

      var seconds = Math.floor(diff / (1000)); diff -= 秒 * (1000);

      console.log(天+"天:"+小时+"小时:"+分钟+"分钟:"+秒+"秒");

      【讨论】:

        【解决方案4】:

        我的解决方案很脏但很直接:自己计算。

        录制开始时间:

        var BEGIN_TIME=new Date();
        var HOUR=BEGIN_TIME.getHours();
        var MINUTE=BEGIN_TIME.getMinutes();
        var SECOND=BEGIN_TIME.getSeconds();
        

        然后做一些数学运算

          var today=new Date();
          h=today.getHours();
          m=today.getMinutes();
          s=today.getSeconds();
        
          s = s - SECOND;
          if (s<0) { s=s+60; m=m-1; }
          m = m - MINUTE;
          if (m<0) { m=m+60; h=h-1; }
          h = h - HOUR;
        

        【讨论】:

          猜你喜欢
          • 2021-11-26
          • 2017-11-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多