0

我正在使用 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;

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

谢谢。

4

4 回答 4

2

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

moment.js 有一个 .fromnow() 函数。

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

于 2013-09-08T13:23:48.953 回答
1

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

var timeDiff = Math.abs(nd.getTime() - pd.getTime());
var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); 
于 2013-09-08T13:01:44.233 回答
0

你可以试试这样。

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 moment

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)); 差异 -= 小时 * (1000 * 60 * 60);

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

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

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

于 2013-09-08T13:14:07.920 回答
0

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

记录开始时间:

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;
于 2016-08-10T05:53:03.033 回答