我正在四处寻找如何做到这一点,我发现很多代码复杂的例子.
我用这个:
我用这个:
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);
但我不建议这样做:日期对象对你的目的来说太过分了.