为什么我会得到+;在javascript中计算时差时为1小时?
我试图创建一个非常简单的时差计算。只是“结束时间-开始时间”。不过我还有1个小时。我怀疑这与我的时区有关,因为我是GMT+1 无论如何,这不应该影响差异,因为开始时间和结束时间都在同一时区 在此处检查我的运行示例代码:为什么我会得到+;在javascript中计算时差时为1小时?,javascript,time,Javascript,Time,我试图创建一个非常简单的时差计算。只是“结束时间-开始时间”。不过我还有1个小时。我怀疑这与我的时区有关,因为我是GMT+1 无论如何,这不应该影响差异,因为开始时间和结束时间都在同一时区 在此处检查我的运行示例代码: 您必须了解Date对象表示什么以及它如何存储日期。基本上,每个日期都是自1970年以来的毫秒数(即所谓的纪元时间)的薄包装。通过从另一个日期中减去一个日期,你不会得到一个日期:你只得到两个日期之间的毫秒数 尽管如此,这句话没有多大意义: var diff = new Date(
您必须了解
Date
对象表示什么以及它如何存储日期。基本上,每个日期都是自1970年以来的毫秒数(即所谓的纪元时间)的薄包装。通过从另一个日期中减去一个日期,你不会得到一个日期:你只得到两个日期之间的毫秒数
尽管如此,这句话没有多大意义:
var diff = new Date(nu - tid1);
您真正需要的是:
var diffMillis = nu - tid1;
…然后简单地提取秒、分钟等:
var seconds = Math.floor(diffMillis / 1000);
var secondsPart = seconds % 60;
var minutes = Math.floor(seconds / 60);
var minutesPart = minutes % 60;
var hoursPart = Math.floor(minutes / 60);
//...
console.log(hoursPart + ":" + minutesPart + ":" + secondsPart);
.考虑使用Date.now()
而不是(new Date()).getTime()
。
var seconds = Math.floor(diffMillis / 1000);
var secondsPart = seconds % 60;
var minutes = Math.floor(seconds / 60);
var minutesPart = minutes % 60;
var hoursPart = Math.floor(minutes / 60);
//...
console.log(hoursPart + ":" + minutesPart + ":" + secondsPart);