某个时间增加/减去N天之后的时间--JS方法

本文介绍了一个用于日期加减指定天数的方法,包括处理不同月份及闰年的特殊情况,并提供了一个判断是否为闰年的辅助函数。

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

//date加上num天数之后等到的时间;date格式:YYYY-MM-DD
function dateAddNumDays(date,num)
{
var dates = date.split("-");
if(dates.length!=3)
{
alert("时间格式错误,请确认!");
return ;
}
var year = dates[0];
var month = dates[1];
var day = dates[2];
var newDay = Number(day)+Number(num);
var oldDay = newDay;
while(newDay>28){
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
{
if(newDay>31)
{
month = Number(month)+1;
newDay = newDay-31;
}
}else if(month==4||month==6||month==9||month==11)
{
if(newDay>30)
{
month = Number(month)+1;
newDay = newDay-30;
}
}else{

if(isLeapYear(year)==true){
if(newDay>29)
{
month = Number(month)+1;
newDay = newDay-29;
}
}else{
if(newDay>28)
{
month = Number(month)+1;
newDay = newDay-28;
}
}

}
if(month>12)
{
month = month-12;
year = Number(year)+1;
}
if(oldDay == newDay)
{
break;
}
}
if(Number(month)<10)
{
month = "0"+Number(month);
}
if(newDay<10)
{
newDay = "0"+newDay;
}
return year+'-'+month+'-'+newDay;
}
//date减少num天数之后等到的时间;date格式:YYYY-MM-DD
function dateReduceNumDays(date,num)
{
var dates = date.split("-");
if(dates.length!=3)
{
alert("时间格式错误,请确认!");
return ;
}
var year = dates[0];
var month = dates[1];
var day = dates[2];
var newDay = Number(day)-Number(num);
while(newDay<=0)
{
if(month==1||month==2||month==4||month==6||month==8||month==9||month==11)
{
newDay = newDay+31;
month = Number(month)-1;

}else if(month==5||month==7||month==10||month==12)
{
newDay = newDay+30;
month = Number(month)-1;
}else{
if(isLeapYear(year)==true){
newDay = newDay+29;
}else{
newDay = newDay+28;
}
month = Number(month)-1;
}
if(month<=0)
{
month = month+12;
year = Number(year)-1;
}
}
if(Number(month)<10)
{
month = "0"+Number(month);
}
if(newDay<10)
{
newDay = "0"+newDay;
}
return year+'-'+month+'-'+newDay;
}
//判断是否是闰年
function isLeapYear(pYear){
if(!isNaN(pYear)){
if((pYear%4==0 && pYear%100!=0)||(pYear%100==0 && pYear%400==0)){
return true;
}else{
return false;
}
}else{
return false;
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值