如何找到两个UNIX时间戳之间的HH:MM:SS差异
How can i find HH:MM:SS difference between two UNIX timestamps?
我正在尝试创建某种计时器。所以我有一些时间戳来标记完成时间,当脚本启动时,我会得到当前的时间戳,然后我只需要每秒增加1。我需要以某种方式每秒计算这两者之间的差异,并以Hours : Minutes : Seconds
的格式显示它。
这是我目前的解决方案,但显然不起作用。end_time
和cur_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 ())
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- 全局变量和全局对象的属性之间有什么区别吗
- java.net和javascript之间正则表达式的差异
- JavaScript中的函数和对象之间没有区别吗?
- 获取@ResponseBody的一部分作为主干和Spring MVC控制器之间的参数
- Jquery在函数之间传递表行
- 根据某些条件在视图之间切换
- 在控制器和数据对象之间同步数据
- d3中堆栈函数和嵌套函数之间的差异
- JQuery:在页面之间滑动
- 如何使用JavaScript查找1和N之间的所有数字的总和
- 操作放置在画布上的元素之间的连接
- 在下划线中使用_(obj).map(callback)和_.map(obj,callback)之间的区别
- jquery在表单之间切换
- Nodejs API控制器,用于在API之间切换
- javascript/jQuery date.toString(“yyyy-MM-dd HH:MM:ss”)在服务器之间
- Javascript - 查找两个 MM-dd-yyyy HH:mm:ss 格式日期之间的秒数
- 用HH:MM:SS javascript计算两个日期之间的时间差
- 如何找到两个UNIX时间戳之间的HH:MM:SS差异
- 如何在Javascript中找到两个字符串之间的hh:mm:dd差异