如何在今天的日期添加天数?

Lin*_*725 283 javascript jquery date

我需要能够使用jQuery在今天的日期添加1,2,5或10天.

p.c*_*ell 478

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

var someDate = new Date();
var numberOfDaysToAdd = 6;
someDate.setDate(someDate.getDate() + numberOfDaysToAdd); 
Run Code Online (Sandbox Code Playgroud)

格式化为dd/mm/yyyy:

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

var someFormattedDate = dd + '/'+ mm + '/'+ y;
Run Code Online (Sandbox Code Playgroud)

  • 像大多数javascript一样,内置日期处理功能非常强大,但完全不直观. (89认同)
  • 我不会称之为*dd/mm/yyyy*格式.我称之为*d/m/yyyy*. (15认同)
  • 仅用于文档,您可以使用方法`setDate`添加o substract天.传递给方法的数字大于31并不重要,甚至可能是负值. (12认同)
  • @Joel:同意,这是一个'setDate()`的先发者.非直观是一个很好的描述符. (10认同)
  • [日期对象](https://developer.mozilla.org/en/JavaScript/Reference/global_objects/date)供参考. (2认同)

小智 95

您可以像这样扩展javascript Date对象

Date.prototype.addDays = function(days) {
    this.setDate(this.getDate() + parseInt(days));
    return this;
};
Run Code Online (Sandbox Code Playgroud)

并在您的javascript代码中,您可以调用

var currentDate = new Date();
// to add 4 days to current date
currentDate.addDays(4);
Run Code Online (Sandbox Code Playgroud)

  • @Ferryvandenheuvel:不对.提出的方法非常好. (14认同)
  • 这将无法正常工作......增加天数将导致奇怪的年份和月份. (7认同)
  • @Ferryvandenheuvel 是对的,因为如果天数以字符串而不是整数形式给出,Krishnas 解决方案需要进行微小但重要的改进才能确保安全:请参阅我在下面的评论 http://stackoverflow.com/a/20468397/2732083 (2认同)

小智 76

为什么不简单地使用

function addDays(theDate, days) {
    return new Date(theDate.getTime() + days*24*60*60*1000);
}

var newDate = addDays(new Date(), 5);
Run Code Online (Sandbox Code Playgroud)

或-5删除5天

  • 由于DTS的改变,这将每年失败两次. (7认同)

小智 71

这是5天:

var myDate = new Date(new Date().getTime()+(5*24*60*60*1000));
Run Code Online (Sandbox Code Playgroud)

你不需要JQuery,你可以在JavaScript中完成它,希望你能得到它.

  • 或者,为了进一步简化,5 天:`let myDate = new Date(Date.now() + 5 * 86400000);` (5认同)
  • 闰秒,夏令时 - 不起作用 (5认同)
  • 我认为这是我发现的最清洁的解决方案.谢谢 (4认同)

Aka*_*ash 33

Moment.js

moment.js这里安装.

npm:$ npm i --save moment

凉亭:$bower install --save moment

下一个,

var date = moment()
            .add(2,'d') //replace 2 with number of days you want to add
            .toDate(); //convert it to a Javascript Date Object if you like
Run Code Online (Sandbox Code Playgroud)

链接参考:http://momentjs.com/docs/#/manipulating/add/

Moment.js是一个令人惊叹的Javascript库来管理Date对象和极轻的重量40kb.

祝好运.

  • 40kb对于单页应用程序来说太多了,而且仅用于管理日期 (6认同)
  • 40kb 没问题,它将缓存在浏览器中,因此下载时间仅适用于首页视图。使用宽带连接的用户不会注意到任何差异。 (2认同)

Eri*_*old 27

来自Krishna Chytanya的原型解决方案非常好,但需要一个小的但重要的改进.必须将days param解析为Integer,以避免在days为类似"1"的字符串时进行奇怪的计算.(我需要几个小时才能找到,我的申请出了什么问题.)

Date.prototype.addDays = function(days) {
    this.setDate(this.getDate() + parseInt(days));
    return this;
};
Run Code Online (Sandbox Code Playgroud)

即使您不使用此原型函数: 使用setDate()时务必确保使用Integer.


Mul*_*oon 16

这里接受的答案给了我不可预知的结果,有时奇怪地增加了几个月和几年.

我找到的最可靠的方法是在这里找到 Javascript Date对象添加天数,并且还增加月份

var dayOffset = 20;
var millisecondOffset = dayOffset * 24 * 60 * 60 * 1000;
december.setTime(december.getTime() + millisecondOffset); 
Run Code Online (Sandbox Code Playgroud)

编辑:虽然它对一些人有用,但我认为这不完全正确.我建议使用更流行的答案或使用像http://momentjs.com/这样的东西



小智 11

纯JS解决方案,日期格式为YYYY-mm-dd格式

var someDate = new Date('2014-05-14');
someDate.setDate(someDate.getDate() + 15); //number  of days to add, e.x. 15 days
var dateFormated = someDate.toISOString().substr(0,10);
console.log(dateFormated);
Run Code Online (Sandbox Code Playgroud)


Sah*_*l J 11

如果不需要日期中的时间,那么您只需使用日期对象的方法来提取月,年和日,并向日部分添加"n"天数.

var n=5; //number of days to add. 
var today=new Date(); //Today's Date
var requiredDate=new Date(today.getFullYear(),today.getMonth(),today.getDate()+n)
Run Code Online (Sandbox Code Playgroud)

参考:Mozilla Javascript GetDate

编辑:参考:Mozilla JavaScript日期

  • today.getDate()=== 30会发生什么? (4认同)

小智 8

Date.prototype.addDays = function(days)
{
    var dat = new Date(this.valueOf() + days * 24 * 60 * 60 * 1000 );
    return dat;
}
Run Code Online (Sandbox Code Playgroud)


Lib*_*hew 6

function addDays(n){
    var t = new Date();
    t.setDate(t.getDate() + n); 
    var month = "0"+(t.getMonth()+1);
    var date = "0"+t.getDate();
    month = month.slice(-2);
    date = date.slice(-2);
     var date = date +"/"+month +"/"+t.getFullYear();
    alert(date);
}

addDays(5);
Run Code Online (Sandbox Code Playgroud)