通过单击Javascript中的下一个日期按钮来增加日期、天、月和年

通过单击Javascript中的下一个日期按钮来增加日期、天、月和年,javascript,date,Javascript,Date,我通过单击下一天和上一天来增加和减少我的应用程序中的日期,日期正在增加,但一旦它到达月底,如31、30、29(2月)、28(2月),那么它也应该更改月份和日期。但它还在不断增加。到目前为止,我已经尝试了以下代码 var today = new Date(); var days = ["Sunday","Monday","Tuesday", "Wednesday","Thursday","Friday","Saturday"]; var mont

我通过单击下一天和上一天来增加和减少我的应用程序中的日期,日期正在增加,但一旦它到达月底,如31、30、29(2月)、28(2月),那么它也应该更改月份和日期。但它还在不断增加。到目前为止,我已经尝试了以下代码

   var today = new Date();
   var days = ["Sunday","Monday","Tuesday",
                 "Wednesday","Thursday","Friday","Saturday"];
   var months = ["January","February","March",
                 "April","May","June","July","August",
                 "September","October","November","December"];
   var nextDate = 0;
函数集_todayDate() {

}

对于下一个日期和上一个日期,我只是增加和减少变量

      function nextDateMethod(){

        nextDate++;

    document.getElementById("todaysDate").innerHTML = ""+days[today.getDay()
      +dayIncrement]+ 
        ", "+months[today.getMonth()]+" 
      "+(today.getDate()+dayIncrement)+""+today.getFullYear();
    }



function prevDate(){
       nextDate--;

document.getElementById("todaysDate").
   innerHTML = months[today.getMonth()]+", 
     "+(today.getDate()+nextDate)+" "+today.getFullYear();
   }

请任何人帮助我

我不明白为什么当日期达到30或31左右时,您的代码会自动更新月份。您使用的是getDate()函数,它返回一个数字。然后,将其增加或减少1。它的行为就像
var x=y+z
。您必须操作
日期
对象,或者必须手动配置月份和闰年等系统。 我在上检查了日期引用对象,似乎没有像C#中那样内置addDays()这样的功能。所以我想你必须手动执行日历规则。
另外,请提及您在何处声明和初始化了下一个日期,这里有一个简单的函数可以向给定日期添加任意天数,诀窍是使用date对象的setDate方法

function addDays(date, days) {
    var result = new Date(date);
    result.setDate(result.getDate() + days);
    return result;
}
编辑:因为date类是可变的,所以您还可以添加一个方法以便于将来使用

Date.prototype.addDays = function(days) {
    this.setDate(this.getDate() + parseInt(days));
    return this;
};
那么,试试这个(下面是运行示例):

var today=新日期();
date=today.getDate();
month=今天。getMonth();
年=今天。getFullYear();
月=月+1;
$(“#Prev”)。单击(函数(){
日期=日期-1;
如果(日期28和月份==2){
日期=1;
月=3;
} 
如果(日期>30&(月==4 |月==6 |月==9 |月==11)){
日期=日期+1;
月=月+1;
}否则,如果(日期>31){
日期=1;
月=月+1;
如果(月份>12){
年份=年份+1;
月=1;
日期=1;
}
}  
$(“#displayDate”)[0]。innerHTML=date+“/”+月+“/”+年;
});
$(“#displayDate”)[0]。innerHTML=date+“/”+月+“/”+年

上一步
尝试以下操作:

如果(!Date.now){
Date.now=函数(){
返回新日期().getTime();
}
}
var theDate=Date.now();
document.getElementById('date')。innerText=getheDate(theDate)
document.getElementById('prev')。addEventListener(“单击”,函数(){
日期-=86400000;
document.getElementById('date')。innerText=getheDate(theDate)
})
document.getElementById('next')。addEventListener(“单击”,函数(){
日期+=86400000;
document.getElementById('date')。innerText=getheDate(theDate)
})
函数getTheDate(getDate){
var days=[“星期日”、“星期一”、“星期二”,
“星期三”、“星期四”、“星期五”、“星期六”
];
var月数=[“一月”、“二月”、“三月”,
“四月”、“五月”、“六月”、“七月”、“八月”,
“九月”、“十月”、“十一月”、“十二月”
];
var theCDate=新日期(getDate);
返回天数[TheDate.getDay()]+','+TheDate.getDate()+'-'+月份[TheDate.getMonth()]+'-'+TheDate.getFullYear();
}

有一个非常简洁的库,名为moment.js,它处理许多日期操作任务,并提供各种方便的方式来显示日期。网页和文档都做得很好,所以我认为他们的努力值得一看

这就是在moment.js中增加日期的请求作业的外观:

var new_date_str = moment().add(1, 'days').format("dd, MMMM, D, YYYY");

查看此小提琴以了解完整的跑步示例:

有趣!我不知道这是有效的。事实上,date对象足够智能,可以识别您想要设置的日期是否大于它的月份天数。是的,我发现文档中缺少我自己,这显然不是一个非常直观的结构@AntonHaraldSir它工作得很好。。谢谢。。事实上,我正在寻找这种格式。没问题!很高兴这有帮助!:)真的,它帮了我很多…-)只有代码的答案没有帮助。你应该解释为什么OP有他们的问题,以及你的答案是如何解决的。事实上,我采取了不同的方法,给了他/她一个解决方案。我没有真正解决这个问题,而是绕道而行。我的代码又短又简单,所以我认为没有必要解释。下次我会牢记在心。你的基本问题是如何在一个日期上加上1天,这里已经有了答案:。请准确回答这个问题!如果您希望获得特定的输出格式,请在问题中明确提及。
var new_date_str = moment().add(1, 'days').format("dd, MMMM, D, YYYY");