JavaScript 两个日期相差一小时是错误的
JavaScript difference between two dates is wrong by one hour
我正在尝试计算 t 两次之间的差异,例如 10:54 和 09:00(预期差异为 1 小时 54 分钟):
Date.prototype.diffTime = function(date){
return new Date(this-date);
}
但这 returns 比我预期的多了一个小时:
Thu Jan 01 1970 10:54:00 GMT+0100 (CET)
Thu Jan 01 1970 09:00:00 GMT+0100 (CET)
Thu Jan 01 1970 02:54:00 GMT+0100 (CET)
那为什么要加一小时呢?输入的时间是正确的。当我使用 getTime() 时,我得到 1.9 小时 (this-date/1000/60/60),这也是正确的。
感谢您的评论。我现在写了一个更简单的函数来满足我的需要:
function getTimeHHMI(date){
var minutes = date/1000/60;
var hours = Math.floor(minutes/60);
minutes -= hours*60;
return [hours, minutes].join(':'); // returns 1:54
}
this-date returns 毫秒。如果你根据差异构造日期,它将是 1970 年的日期
Date.prototype.diffTime = function(date){
return (this-date)/1000/60/60;
}
当您将 this-date
传递给 new Date
时,该值被解释为表示 1:54am 的 unix 时间戳。 GMT+0 中的 1:54am 与 GMT+1 中的 2:54am 相同。 IE。浏览器将 unix 时间戳转换为您的本地时间。
将持续时间转换为日期值没有意义,因为持续时间与时区无关。
我正在尝试计算 t 两次之间的差异,例如 10:54 和 09:00(预期差异为 1 小时 54 分钟):
Date.prototype.diffTime = function(date){
return new Date(this-date);
}
但这 returns 比我预期的多了一个小时:
Thu Jan 01 1970 10:54:00 GMT+0100 (CET)
Thu Jan 01 1970 09:00:00 GMT+0100 (CET)
Thu Jan 01 1970 02:54:00 GMT+0100 (CET)
那为什么要加一小时呢?输入的时间是正确的。当我使用 getTime() 时,我得到 1.9 小时 (this-date/1000/60/60),这也是正确的。
感谢您的评论。我现在写了一个更简单的函数来满足我的需要:
function getTimeHHMI(date){
var minutes = date/1000/60;
var hours = Math.floor(minutes/60);
minutes -= hours*60;
return [hours, minutes].join(':'); // returns 1:54
}
this-date returns 毫秒。如果你根据差异构造日期,它将是 1970 年的日期
Date.prototype.diffTime = function(date){
return (this-date)/1000/60/60;
}
当您将 this-date
传递给 new Date
时,该值被解释为表示 1:54am 的 unix 时间戳。 GMT+0 中的 1:54am 与 GMT+1 中的 2:54am 相同。 IE。浏览器将 unix 时间戳转换为您的本地时间。
将持续时间转换为日期值没有意义,因为持续时间与时区无关。