明年的昨天算法 / ios时间格式bug修复

本文介绍了一个JavaScript函数,用于计算输入日期之后的一年同一日期,并考虑了平年和闰年的情况。此外,还提供了获取指定日期前一天和后一天的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>

<script>  

//获取明年的今天

function yestNextyear(today){

//将日期格式换成2017/07/08格式,由于ios下不支持 2017-07-08日期格式,会出现NaN-NaN-NaN乱码,因此进行转换

today = today.replace(/-/g,"/");
var now = new Date(today);
now_Year = now.getFullYear();
now_Month = now.getMonth()+1;
                now_date = now.getDate();
//判断今年是不是闰年         
       now_cond1 = now_Year%4==0;
now_cond2 = now_Year%100!=0;
now_cond3 = now_Year%400==0;
//判断明年是不是闰年
tom_Year = now_Year+1;
tom_cond1 = tom_Year%4==0;
tom_cond2 = tom_Year%100!=0;
tom_cond3 = tom_Year%400==0; 

now_cond= (now_cond1 && now_cond2 )|| now_cond3;
                        tom_cond= (tom_cond1 && tom_cond2 )|| tom_cond3;
if(now_Month > 2){

if(tom_cond){

//如果明年是闰年  由于月份大于2,则经历明年的2月29,所以明年的今天 得加366天,用毫秒数则会自动算出对应的天数,自动算每个月的天数。

next_Mil = +now + 1000*60*60*24*366;
y = new Date(next_Mil);
return y.getFullYear()+"-"+(y.getMonth()+1)+"-"+y.getDate();
}else{
next_Mil = +now + 1000*60*60*24*365;
y = new Date(next_Mil);
return y.getFullYear()+"-"+(y.getMonth()+1)+"-"+y.getDate();
}

}else{

//如果今年是闰年  由于月份小于2,则经历今年的2月29,所以明年的今天 得加366天。

if(now_cond){
next_Mil = +now + 1000*60*60*24*366;
y = new Date(next_Mil);
return y.getFullYear()+"-"+(y.getMonth()+1)+"-"+y.getDate();
}else{
next_Mil = +now + 1000*60*60*24*365;
y = new Date(next_Mil);
return y.getFullYear()+"-"+(y.getMonth()+1)+"-"+y.getDate();
}

}

// 获取下一天

function getNextDay(d){
d = d.replace(/-/g,"/");
       d = new Date(d);
       d = +d + 1000*60*60*24;
       d = new Date(d);
       return d.getFullYear()+"-"+(d.getMonth()+1)+"-"+d.getDate();
   }

// 获取上一天
   function yesterday(d){
    d = d.replace(/-/g,"/");
    d = new Date(d);
       d = +d - 1000*60*60*24;
       d = new Date(d);
       return d.getFullYear()+"-"+(d.getMonth()+1)+"-"+d.getDate(); 
   }
alert("20150228:/"+getNextDay("2015/02/28")+"/"+yesterday(yestNextyear(getNextDay("2015/02/28"))));
 
alert("20150301:/"+getNextDay("2015/03/01")+"/"+yesterday(yestNextyear(getNextDay("2015/03/01"))));
alert("20160301:/"+getNextDay("2016/03/01")+"/"+yesterday(yestNextyear(getNextDay("2016/03/01"))));
alert("20150229:/"+getNextDay("2016/02/29")+"/"+yesterday(yestNextyear(getNextDay("2016/02/29")))); 
alert("20170301:/"+getNextDay("2017/03/01")+"/"+yesterday(yestNextyear(getNextDay("2017/03/01")))); 
alert("20151231:/"+getNextDay("2015/12/31")+"/"+yesterday(yestNextyear(getNextDay("2015/12/31")))); 
</script>
<body>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值