计算第二天的日期的要点在于,在跨月时进入下一月,在跨年时进入下一年。其他时间只要天数加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);
JavaScript计算明天的日期
-
Google Chrome 53Windows -
Google Chrome 53Windows var 今天=new Date();
今天.setFullYear(2016,1,28);
var 第一天 = new Date();
var 第二天 = new Date();
第一天.setTime(Date.parse(今天)+86400000*1);
第二天.setTime(Date.parse(今天)+86400000*2);
console.log(今天.toLocaleDateString());
console.log(第一天.toLocaleDateString());
console.log(第二天.toLocaleDateString());
-
-
Google Chrome 52Windows 7 x64 Edition 美国人哭了
-
Google Chrome 45Windows var myDate = new Date();
var y = myDate.getFullYear();
var m = myDate.getMonth();
var d = myDate.getDate();
console.log(y,m,d);myDate .setDate(myDate.getDate() + 1);
var y = myDate.getFullYear();
var m = myDate.getMonth();
var d = myDate.getDate();
console.log(y,m,d);用setDate感觉更好,本身api就处理了月份进位和闰年问题,Saber酱的代码没有处理整百年要除400判断闰年的问题吧( ̄▽ ̄)
转成时间戳+86400000再转回来呗.