我有两个文本输入字段,用户可以以“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,这显然是错误的:))。我误解了什么吗?
答案 0 :(得分: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。
答案 1 :(得分:0)
查看getTime
方法。这可能有效:
var difference = new Date(time2.getTime() - time1.getTime());
答案 2 :(得分:0)
答案 3 :(得分: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()
P.S。一个类似的问题已经回答long long time ago