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

时间:2016-07-01 16:41:15

标签: javascript date time difference

我试图计算两次之间的差异,比如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小时(这个日期/ 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
}

2 个答案:

答案 0 :(得分:1)

这个日期返回毫秒。如果你根据差异构建日期,那将是1970年的日期

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

答案 1 :(得分:1)

当您将this-date传递给new Date时,该值将被解释为代表凌晨1:54的unix时间戳。格林威治标准时间上午1:54 + 0与GMT + 1上午2:54相同。即浏览器将unix时间戳转换为您当地的时间。

持续时间转换为日期值没有意义,因为持续时间与时区无关。