如何找到两个UNIX时间戳之间的HH:MM:SS差异

How can i find HH:MM:SS difference between two UNIX timestamps?

本文关键字:HH 之间 MM 差异 SS 时间戳 UNIX 何找 两个      更新时间:2023-09-26

我正在尝试创建某种计时器。所以我有一些时间戳来标记完成时间,当脚本启动时,我会得到当前的时间戳,然后我只需要每秒增加1。我需要以某种方式每秒计算这两者之间的差异,并以Hours : Minutes : Seconds的格式显示它。

这是我目前的解决方案,但显然不起作用。end_timecur_time是时间戳:

diff = end_time - cur_time;
hours_diff = Math.ceil(diff/3600)
mins_diff = Math.ceil((diff-hours_diff)/60)
secs_diff = diff - hours_diff*3600 - mins_diff*60;

您需要从较小的单元开始工作:

diff = Math.floor(diff / 1000);
var secs_diff = diff % 60;
diff = Math.floor(diff / 60);
var mins_diff = diff % 60;
diff = Math.floor(diff / 60);
var hours_diff = diff % 24;
diff = Math.floor(diff / 24);
// and so on, with the next divisor being 7
// for days by week, for example.

在每一步中,都要执行除法和余数运算。剩余部分为当前单位。除以(和余数)的量是下一个较大时间单位中的单位数。

最初除以1000假设您的时间戳以毫秒为单位。如果它们在几秒钟内,你就不需要了。

通过将除数和标签存储在一个数组中,可以使事情变得更整洁:

function timeDiff( tstart, tend ) {
  var diff = Math.floor((tend - tstart) / 1000), units = [
    { d: 60, l: "seconds" },
    { d: 60, l: "minutes" },
    { d: 24, l: "hours" },
    { d: 7, l: "days" }
  ];
  var s = '';
  for (var i = 0; i < units.length; ++i) {
    s = (diff % units[i].d) + " " + units[i].l + " " + s;
    diff = Math.floor(diff / units[i].d);
  }
  return s;
}

使用JavaScript Date对象将时间戳转换为日期&时间:

var timeDifference = end_time - cur_time;
var differenceDate = new Date(timeDifference * 1000);
var diffHours = differenceDate.getUTCHours();
var diffMinutes = differenceDate.getUTCMinutes();
var diffSeconds = differenceDate.getUTCSeconds();

然后以H:M:S格式获得可读时间:

var readableDifference = diffHours + ':' + diffMinutes + ':' + diffSeconds;

您必须乘以1000才能得到以毫秒为单位的差值(这是Date的构造函数所期望的)。Unix时间戳是自1970年1月1日以来以秒为单位的时间表示。

快速的JSFiddle演示:http://jsfiddle.net/WaZQt/

我认为你需要math.floor而不是match.ceil。任何小于3600秒的时间都不是一个小时。

您可以使用modulo%)从剩余的分钟中筛选出小时(秒也是如此)。

hours_diff = Math.floor(diff/3600);
mins_diff = Math.floor((diff % 3600)/60)
secs_diff = diff%60;

创建一个以毫秒为单位的日期对象:

 d = new Date (seconds * 1000);

现在UTC小时、分钟和秒对应于您的要求

 console.log (d.getUTCHours () ,d.getUTCMinutes (), d.getUTCSeconds ())