【发布时间】:2015-03-23 14:08:18
【问题描述】:
我有以下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()));
}
这些是日期的日志:
- 2015 年 4 月 23 日星期四 08:15:00 GMT+0200(中欧夏令时间)
- 2015 年 4 月 23 日星期四 12:02:00 GMT+0200(中欧夏令时间)
- 2015 年 4 月 23 日星期四 12:37:00 GMT+0200(中欧夏令时间)
- 2015 年 4 月 23 日星期四 15:02:00 GMT+0200(中欧夏令时间)
手动计算时差时,这里是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);
}
就是这样。
【问题讨论】:
-
你能举个例子说明你是如何使用这个函数的(你传递了什么变量)谢谢。
-
更新,提供更多信息
-
我认为这与 3 月 29 日时间更改为中欧夏令时有关。您正在返回一个新日期,传递一个时间而不是日期,因此它使用的是您当前的时区(不是 CEDT)。
-
关于如何解决这个问题的任何建议?
-
您是否看到您输入了
23/03/2015并且您得到的是 Apr 而不是一个月的 Mar?
标签: javascript