JS中的时间差有错误的结果

time difference in JS has wrong result

本文关键字:结果 有错误 时间差 JS      更新时间:2023-09-26

我有两个文本输入字段,用户可以在其中输入格式为"hh:mm"的时间。主要部分看起来像以下代码:

    var time1 = new Date("01/01/2013 " + time1input);   
    var time2 = new Date("01/01/2013 " + time2input);
    var difference = new Date(time2 - time1);

结果总是01:00到高(例如08:00-04:00导致05:00,这显然是错误的:)。我误解什么了吗?

你不能处理这样的日期。

请尝试以下操作:

var time1input = "04:00";
var time2input = "08:00";
var time1 = new Date("01/01/2013 " + time1input);   
var time2 = new Date("01/01/2013 " + time2input);
var difference = time2.getTime() - time1.getTime();
console.log(difference / 60 / 60 / 1000); //<- whittle this down to hours

这将注销"4"。

如果你在处理时间问题,可以使用以下内容http://momentjs.com/,它可以让你做一些很酷的事情,比如。。

difference = moment(time2).diff(time1, 'hours'); //<- will return 4

格式(hh:mm):(假设使用与第一个示例的差异)

var hours = Math.floor(difference / 60 / 60 / 1000);
var minutes = Math.round(difference / 60 / 1000) % 60;
var formattedString = (hours > 10 ? hours : "0" + hours) + ":" + (minutes > 10 ? minutes : "0" + minutes);

4小时差将返回"04:00",13小时30分钟差将返回13:30。

查看getTime方法。这可能有效:

var difference = new Date(time2.getTime() - time1.getTime());

通常当我们计算时差时。

我们过去常常将其转换为毫秒,找到差异并进行转换返回到一种格式。

检查此张贴

还有:

var time1 = new Date("01/01/2013 " + time1input)
var time2 = new Date("01/01/2013 " + time2input)
var difference = time2 - time1

difference是以毫秒为单位的差值,因此要获得以小时为单位的差异,可以执行以下操作:

var time1 = new Date("01/01/2013 04:00")
var time2 = new Date("01/01/2013 08:00")
var difference = (time2 - time1)/1000/60/60
console.log(difference)
# => 4

请注意,您可以直接使用Date对象进行操作,不需要调用.getTime()

p.s.一个类似的问题很久以前就已经得到了回答