如何使用JavaScript将日期添加到当前日期?JavaScript是否有像.NET的AddDay()那样的内置函数?


当前回答

为管道运营商设计的解决方案:

const addDays = days => date => {
  const result = new Date(date);

  result.setDate(result.getDate() + days);

  return result;
};

用法:

// Without the pipeline operator...
addDays(7)(new Date());

// And with the pipeline operator...
new Date() |> addDays(7);

如果您需要更多功能,我建议查看日期fns库。

其他回答

我使用的是:

new Date(dateObject.getTime() + amountOfDays * 24 * 60 * 60 * 1000)

节省时间的工作:

new Date(new Date(2014, 2, 29, 20, 0, 0).getTime() + 1 * 24 * 60 * 60 * 1000)

与新年一起工作:

new Date(new Date(2014, 11, 31, 20, 0, 0).getTime() + 1 * 24 * 60 * 60 * 1000)

它可以参数化:

function DateAdd(source, amount, step) {
  var factor = 1;
  if (step == "day") factor = 24 * 60 * 60 * 1000;
  else if (step == "hour") factor = 60 * 60 * 1000;
  ...
  new Date(source.getTime() + amount * factor);
}

您可以使用JavaScript,不需要jQuery:

var someDate = new Date();
var numberOfDaysToAdd = 6;
someDate.setDate(someDate.getDate() + numberOfDaysToAdd); 
Formatting to dd/mm/yyyy :

var dd = someDate.getDate();
var mm = someDate.getMonth() + 1;
var y = someDate.getFullYear();

var someFormattedDate = dd + '/'+ mm + '/'+ y;

为什么这么复杂?

假设您将要添加的天数存储在一个名为days_to_add的变量中。

那么这个简短的应该做到:

calc_date = new Date(Date.now() +(days_to_add * 86400000));

使用Date.now(),您可以获得实际的unix时间戳(以毫秒为单位),然后添加您想要添加的天数。一天为24h60min60s*1000ms=86400000 ms或864E5。

new Date(Date.now() + 2000 * 86400)

此代码段使用“2000”参数为当前日期添加两天。您可以通过更新第二个参数中的“2000”值来调整天数。

您可以使用这种单行格式,使用本机JavaScript日期将日期添加到当前日期。

您可以使用以下选项创建一个:-

Date.prototype.addDays=函数(天){var date=新日期(this.valueOf());date.setDate(date.getDate()+天);返回日期;}var date=新日期();console.log(date.addDays(5));

这会在必要时自动增加月份。例如:

8/31+1天将变为9/1。

直接使用setDate的问题是它是一个赋值函数,最好避免这种情况。ECMA认为将Date视为一个可变的类而不是一个不可变的结构是合适的。