Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将小时数添加到现有日期并通过JS获得新日期_Javascript_Date - Fatal编程技术网

Javascript 将小时数添加到现有日期并通过JS获得新日期

Javascript 将小时数添加到现有日期并通过JS获得新日期,javascript,date,Javascript,Date,我有一个javascript函数,它向提供的日期添加一定的小时数,并返回新的日期,如下所示 $scope.CalDate = function() { var preDate = "2019-06-20 21:30"; var formatDate = new Date(preDate ); var diffHours = 2.30; var newDate = new Date(formatDate.getTime() + (diffHours*1000*60*60)); return new

我有一个javascript函数,它向提供的日期添加一定的小时数,并返回新的日期,如下所示

$scope.CalDate = function()
{
var preDate = "2019-06-20 21:30";
var formatDate = new Date(preDate );
var diffHours = 2.30;
var newDate = new Date(formatDate.getTime() + (diffHours*1000*60*60));
return newDate;
}

实际答案应为2019年6月21日星期三00:00:00。但它返回以下答案2019年6月20日星期四23:48:00。为什么会发生这种情况?

您增加了2.3小时,而不是2.5小时(2.5小时)

要将2.3转换为正确的乘数,请使用
Math.floor(2.3)+(2.3%1)/0.6

$scope.CalDate = function()
{
var preDate = "2019-06-20 21:30";
var formatDate = new Date(preDate );
var diffHours = 2.3;
var actualDiff = Math.floor(diffHours) + (diffHours % 1)/0.6


var newDate = new Date(formatDate.getTime() + (actualDiff*1000*60*60));
return newDate;
}

您将增加2.3小时,而不是2.5小时(2.5小时)

要将2.3转换为正确的乘数,请使用
Math.floor(2.3)+(2.3%1)/0.6

$scope.CalDate = function()
{
var preDate = "2019-06-20 21:30";
var formatDate = new Date(preDate );
var diffHours = 2.3;
var actualDiff = Math.floor(diffHours) + (diffHours % 1)/0.6


var newDate = new Date(formatDate.getTime() + (actualDiff*1000*60*60));
return newDate;
}

要将小时和分钟添加到日期,请使用以下方法

$scope.CalDate = function()
{
var preDate = "2019-06-20 21:30";
var formatDate = new Date(preDate );
var diffHours = 2.3;
formatDate.setHours(formatDate.getHours() + 2);
formateDate.setMinutes(formatDate.getMinutes() + 30);
return formateDate;
}

要将小时和分钟添加到日期,请使用以下方法

$scope.CalDate = function()
{
var preDate = "2019-06-20 21:30";
var formatDate = new Date(preDate );
var diffHours = 2.3;
formatDate.setHours(formatDate.getHours() + 2);
formateDate.setMinutes(formatDate.getMinutes() + 30);
return formateDate;
}

这可能会有帮助,因为你增加了2.3小时,而不是2.5小时。您的差异必须为2.5请参见
新日期(“2019-06-20 21:30”)
在某些实现中返回无效日期。这可能会有所帮助,因为您要添加2.3小时,而不是2.5小时。您的差异必须为2.5请参见
新日期(“2019-06-20 21:30”)
在某些实现中返回无效日期。我使用小时和分钟获取差异小时数。因此,它给出了as 2.3。我该怎么办?@tharindu你可以简单地按比例乘以它?Math.floor(2.3)+(2.3%1)/0.6-用存储的变量替换2.3注意Javascript浮点计算,因此使用十进制小时代替小时、分钟、秒可能会产生小错误,导致令人烦恼的不准确结果。如果
“2.3”
应该是
“2:30”
,那么就这样对待它,不要把它转换成
2.5
,希望一切正常。正确的@tharindu它转换成2.499,这足够接近2.5。如果您使用的是文字2.3,请将其更改为2.5。如果您正在计算2.3,请发布代码,说明您如何获得该数字。使用小时和分钟获得diffHours。因此,它给出了as 2.3。我该怎么办?@tharindu你可以简单地按比例乘以它?Math.floor(2.3)+(2.3%1)/0.6-用存储的变量替换2.3注意Javascript浮点计算,因此使用十进制小时代替小时、分钟、秒可能会产生小错误,导致令人烦恼的不准确结果。如果
“2.3”
应该是
“2:30”
,那么就这样对待它,不要把它转换成
2.5
,希望一切正常。正确的@tharindu它转换成2.499,这足够接近2.5。如果您使用的是文字2.3,请将其更改为2.5。如果你是在计算2.3,请张贴代码说明你是如何得到这个数字的