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

标签 javascript date time gettime

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

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/

相关文章:

c++ - 如何查找 C/C++ 中线程使用的总时间?

javascript - 如何使用 lodash 格式化数组数组

javascript - 用于达到最大字符数加上单词结尾的正则表达式(如果适用)

php - json 日期对象到 php 日期

python - 使用 Google Cloud Functions 时如何设置 Google Cloud Datastore 实体的日期属性?

php - 如何格式化mysql中的now函数

c++ - 如何将包含时间的字符串变量转换为 c++ 中的 time_t 类型?

javascript - 隐藏和取消隐藏 koGrid 元素

javascript - Node JS HTTP GET 请求正文

javascript - 在此日期函数中添加天数有什么问题?