我四处寻找如何做到这一点,我发现了很多代码复杂的例子。 我正在使用这个:
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”才能获得正确的失误。
谢谢!!!
最佳答案
问题是你的时区。
当您执行 new Date(difference)
时,您正在创建一个 Date
对象,它代表 1 月 1 日之后 difference
毫秒的时刻,1970 年。当您执行 lapse.getHours()
时,您的时区将用于计算。您无法通过 Javascript 修改您的时区,也无法修改此行为。并非没有一些沉重的 Javascript 技巧。
但是您的差异
确实不代表日期,而是日期的差异。如此对待,并像这样计算小时、分钟和秒:
var hours = Math.floor(difference / 36e5),
minutes = Math.floor(difference % 36e5 / 60000),
seconds = Math.floor(difference % 60000 / 1000);
或者,您可以在创建lapse
时考虑您的时区:
var lapse = new Date(difference + new Date().getTimezoneOffset() * 1000);
但我不推荐这样做:Date
对象对于您的目的来说太过分了。
关于javascript - 计算两次javascript之间的时间差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16188119/