2

我有两个文本输入字段,用户可以在其中输入格式为“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 这显然是错误的:))。我误解了什么吗?

4

4 回答 4

5

你不能使用这样的日期。

请尝试以下操作:

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。

于 2013-07-01T19:43:58.357 回答
0

通常当我们计算时差时。

我们曾经将其转换为毫秒,找出差异并转换回格式。

检查这篇文章

于 2013-07-01T19:42:43.110 回答
0

还:

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()

ps一个类似的问题很久以前就已经回答过了

于 2013-07-01T19:51:50.967 回答
0

getTime方法。这可能有效:

var difference = new Date(time2.getTime() - time1.getTime());
于 2013-07-01T19:42:03.987 回答