在现有日期中增加小时数,并通过JS获取新日期

时间:2019-06-03 06:54:47

标签: 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 newDate;
}

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

2 个答案:

答案 0 :(得分:2)

您要添加2.3小时而不是2.5小时(2个半)

$scope.CalDate = function()
{
var preDate = "2019-06-20 21:30";
var formatDate = new Date(preDate );
var diffHours = 2.5;//Add 2 and a half hours
var newDate = new Date(formatDate.getTime() + (diffHours*1000*60*60));
return newDate;
}

要将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;
}

答案 1 :(得分:0)

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

$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;
}