gpt4 book ai didi

javascript - 计算两次javascript之间的时间差

转载 作者:数据小太阳 更新时间:2023-10-29 04:06:20 25 4
gpt4 key购买 nike

我四处寻找如何做到这一点,我发现了很多代码复杂的例子。我正在使用这个:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com