Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 两个日期相差一小时是错误的_Javascript_Date_Time_Difference - Fatal编程技术网

Javascript 两个日期相差一小时是错误的

Javascript 两个日期相差一小时是错误的,javascript,date,time,difference,Javascript,Date,Time,Difference,我试图计算两次之间的差异,如10:54和09:00(预期差异为1小时54分钟): 但这比我预期的多了一个小时: 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),这也是正确的 谢谢你的

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

但这比我预期的多了一个小时:

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
}

这个日期返回毫秒。如果你用这个差来构造日期,它将是一个很长的日期

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

这个日期返回毫秒。如果你用这个差来构造日期,它将是一个很长的日期

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

此日期
传递到
新日期
时,该值将被解释为表示1:54am的unix时间戳。GMT+0中的凌晨1:54与GMT+1中的凌晨2:54相同。即,浏览器将unix时间戳转换为您的本地时间


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

当您将
此日期
传递到
新日期
时,该值被解释为代表1:54 AM的unix时间戳。GMT+0中的凌晨1:54与GMT+1中的凌晨2:54相同。即,浏览器将unix时间戳转换为您的本地时间

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