两个日期之间的JavaScript差异是错误的一个小时

JavaScript difference between two dates is wrong by one hour

本文关键字:错误 小时 一个 两个 日期 之间 JavaScript      更新时间:2023-09-26

我试图计算两个时间之间的差异,如10:54和09:00(预期差异是1小时54分钟):

Date.prototype.diffTime = function(date){
    return new Date(this-date);
}

但是这个返回的时间比我预期的多一个小时:

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传递给new Date时,该值被解释为代表1:54am的unix时间戳。GMT+0中的1:54am与GMT+1中的2:54am相同。即,浏览器将unix时间戳转换为您的本地时间。

duration转换为日期值是没有意义的,因为duration与时区无关。

this-date返回毫秒。如果从差值构造日期,它将是一个很长的日期1970

Date.prototype.diffTime = function(date){
    return (this-date)/1000/60/60;
}