我有以下javascript函数:
timeDiff = function(date, time1, time2, time3, time4) {
var dateVmS = convertToDate(date, time1);
var dateVmE = convertToDate(date, time2);
var dateNmS = convertToDate(date, time3);
var dateNmE = convertToDate(date, time4);
console.log(dateVmS);
console.log(dateVmE);
console.log(dateNmS);
console.log(dateNmE);
return new Date((dateVmE.getTime() - dateVmS.getTime())
+ (dateNmE.getTime() - dateNmS.getTime()));
}
这些是日期的日志:
计算时差手册时,这是6:12:00。
但我的代码会在7:12:00返回。但我使用相同的计算方法(在excel中计算它也是6:12,使用相同的((B - A) + (D - C))
方法)
编辑: 以下列方式调用函数get:
timeDiff("08:15","12:02","12:37","15:02")
,日期如下:23/03/2015
然后转换为convertToDate:
convertToDate = function(date, time){
var tempH = time.split(':');
var tempDate = date.split('/');
return new Date(tempDate[2], tempDate[1], tempDate[0], tempH[0], tempH[1], 0);
}
就是这样。
答案 0 :(得分:2)
您的月份转换错误,您应该在0到11之间放置一个数字,因此如果您从互联网上取下它,则应减少1。如果您使用如下所示的UTC,强烈建议使用。
convertToDate = function (date, time) {
var tempH = time.split(':');
var tempDate = date.split('/');
var newDate = new Date(Date.UTC(tempDate[2], tempDate[1] - 1, tempDate[0], tempH[0], tempH[1], 0));
return newDate;
}
timeDiff = function (date, time1, time2, time3, time4) {
var dateVmS = convertToDate(date, time1);
var dateVmE = convertToDate(date, time2);
var dateNmS = convertToDate(date, time3);
var dateNmE = convertToDate(date, time4);
return new Date((dateVmE.getTime() - dateVmS.getTime()) + (dateNmE.getTime() - dateNmS.getTime()));
}
@Tom写了他的评论,在javaScript中你使用CEST而不是你正在使用CET的excel,这就是为什么差一小时。
为避免您使用世界时。
参考: