计算两次javascript之间的时差

前端之家收集整理的这篇文章主要介绍了计算两次javascript之间的时差前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在四处寻找如何做到这一点,我发现很多代码复杂的例子.
我用这个:
var time1 = new Date();
var time1ms= time1.getTime(time1); //i get the time in ms

然后我在代码的其他部分执行此操作

var time2 = new Date();
var time2ms= time2.getTime(time2);

并且最终:

var difference= time2ms-time1ms;
var lapse=new Date(difference);  
label.text(lapse.getHours()+':'+lapse.getMinutes()+':'+lapse.getSeconds());

这很好用,除了一个问题,它给我的时间总是1,所以我必须添加代码(time.getHours() – 1)否则它会给我一个多小时….

我认为比其他所有示例都更容易实现…但我仍然不明白为什么我需要添加’-1’才能获得正确的失效.

谢谢!!!

解决方法

问题是你的时区.

当您执行新的日期(差异)时,您将创建一个Date对象,该对象表示1970年1月1日之后的exatcly差异毫秒.当您执行lapse.getHours()时,您的时区将用于计算.您无法通过Javascript修改您的时区,也无法修改此行为.不是没有一些沉重的Javascript技巧.

但是你的差异并不代表日期,而是日期的差异.这样治疗,并像这样计算小时,分钟和秒:

var hours = Math.floor(difference / 36e5),minutes = Math.floor(difference % 36e5 / 60000),seconds = Math.floor(difference % 60000 / 1000);

或者,您可以在创建失效时考虑您的时区:

var lapse = new Date(difference + new Date().getTimezoneOffset() * 1000);

但我不建议这样做:日期对象对你的目的来说太过分了.

猜你在找的JavaScript相关文章