/**
* 计算过去和未来的时间距离现在多少天?
* 格式 getBeforeDate('2015,5,20')
*/
function getBeforeDate(n){
let now = new Date();
let aftertime = new Date(n);
let year = now.getFullYear();
let mon= now.getMonth()+1;
let day= now.getDate();
let year_after = aftertime.getFullYear();
let mon_after = aftertime.getMonth()+1;
let day_after = aftertime.getDate();
let chs = 0;
//获取当月的天数
function DayNumOfMonth(Year,Month)
{
return 32 - new Date(Year,Month-1,32).getDate();
}
if(aftertime.getTime() - now.getTime() < 0){
let temp1 = day_after;
let temp2 = mon_after;
let temp3 = year_after;
day_after = day;
mon_after = mon;
year_after = year;
day = temp1;
mon = temp2;
year = temp3;
}
if(year == year_after){//不跨年
if(mon == mon_after){//不跨年不跨月
chs += day_after-day;
}else{//不跨年跨月
chs += DayNumOfMonth(year,mon)- day+1;//加上第一个不满的
for(let i=1;i< mon_after-mon;i++){
chs += DayNumOfMonth(year,mon+i);
}
chs += day_after-1;//加上
}
}else{//存在跨年
chs += DayNumOfMonth(year,mon)- day+1;//加上开始年份不满的一个月
for(let m=1;m<12-mon;m++){
chs += DayNumOfMonth(year,mon+m);
}
for(let j=1;j < year_after-year;j++){
if((year+j)%400 == 0 || (year+j)%4 == 0 && (year+j)%100 != 0){
chs += 366;
}else{
chs += 365;
}
}
for(let n=1;n <= mon_after;n++){
chs += DayNumOfMonth(year_after,n);
}
chs += day_after-1;
}
if(aftertime.getTime() - now.getTime() < 0){
return -chs;
}else{
return chs;
}
}
js计算过去和未来的时间距离现在多少天?
最新推荐文章于 2022-03-06 00:58:10 发布