09/1
2016
计算第二天的日期的要点在于,在跨月时进入下一月,在跨年时进入下一年。其他时间只要天数加1就行。所以找出每个月的最后一天就ok了。
function tomorrow_date (y,m,d){ //参数里的月份需要是自然月。也就是说月份+1这步在传参前就设置好 var run = false; //判断是否是闰年 if (!(y%4)) { //如果年份是4的整数倍 if (!(y%100)) { //如果是整百年 if (!(y%400)) { //如果是400的整数 run = true; } }else{ run = true; } } if(d==28&&m==2){ //2月28日 if(!run) { //非闰年 d=1; m++; }else{ //闰年 d++; } }else if(d==29&&m==2){ //2月29日 d=1; m++; }else if(d==30&&(m==4||m==6||m==9||m==11)){ //30天的月份里的第30天 d=1; m++; }else if(d==31){ //31天的月份里的第31天 d=1; if (m==12){ //如果是12月则进入下一年 m=1; y++; }else{ m++; } }else{ //如果今天不是月份的最后一天 d++; } return "明天是"+y+"年"+m+'月'+d+'日'; } var myDate = new Date(); var y = myDate.getFullYear(); var m = myDate.getMonth()+1; //因为js的月份是从0开始的,所以这里月份+1 var d = myDate.getDate(); document.write(tomorrow_date(y,m,d));
感谢TianMao指出闰年的问题~另外他提出了使用Date对象的setDate方法来计算下一天的办法。这个办法很简便,当我们重设了日期(第几天)后,JavaScript会自动更新Date对象的月份、年份,这样就我们就不用自己写上面的判断了。
var myDate = new Date(); myDate.setDate(myDate.getDate()+1); var y = myDate.getFullYear(); var m = myDate.getMonth()+1; var d = myDate.getDate(); console.log(y,m,d);