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

Javascript JS中的时差有错误的结果,javascript,Javascript,我有两个文本输入字段,用户可以在其中以“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,这显然是错误的:)。我

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

看看
getTime
方法。这可能会奏效:

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

通常当我们计算时差时

我们习惯于将其转换为毫秒,找到差异并进行转换 返回到一个格式


勾选此项

您不能处理这样的日期

请尝试以下操作:

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小时的时差将返回“04:00”,13小时30分钟的时差将返回13:30。

此外:

var time1 = new Date("01/01/2013 " + time1input)
var time2 = new Date("01/01/2013 " + time2input)
var difference = time2 - time1
差异
是以毫秒为单位的差异,因此要以小时为单位获得差异,可以执行以下操作:

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
请注意,您可以直接对日期对象进行操作,无需调用
.getTime()


p、 一个类似的问题已经被回答了一个

是什么让你认为在JavaScript中减法日期可以像你期望的那样工作?也许因为我是一个幼稚的JavaScript初学者,我认为它不起作用:这正是OP的代码所做的。我写的是Moment.js:(哦,对不起,伙计。超级有用的库,每当有人说“日期”时总是我的“goto”。哇,太酷了。但是如果我希望差异的格式是hh:mm?更新。有100种不同的方法来实现这一点。我给出的示例没有考虑到多天的差异(即2天将有48小时)。您将不得不对该日期进行修改。var time1=新日期(“01/01/2013”+departureTimeInput);表示无效日期。尽管departureTimeInput为“04:00”
var time1 = new Date("01/01/2013 " + time1input)
var time2 = new Date("01/01/2013 " + time2input)
var difference = time2 - time1
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