按 YYYY-MM-DD 格式表示日期的字符串date,计算并返回该日期是当年的第几天
注意点:
- 对输入函数的时间字符串进行处理
- 判断当前年份是否闰年
- 判断用户输入的时间格式是否正确
判断闰年的方法:能被 4 整除但不能被 100 整除是闰年,能被 400 整除是闰年
- 方法1
function getDays(date){
let ymd = date.split('-');
let y = +ymd[0],//字符串转数字
m = +ymd[1],
d = +ymd[2];
let num = 0;
for(let i = 1; i <= m; i++){
switch(i){
case 1:
num += d;
break;
case 2:
num += (((y%4==0 && y%100!=0) || y%400==0)?29:28);
break;
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
num += 31;
break;
case 4:
case 6:
case 9:
case 11:
num += 30;
break;
}
}
return num;
}
- 方法2
function getDays(date){
let ymd = date.split('-');
let y = +ymd[0],//字符串转数字
m = +ymd[1],
d = +ymd[2];
let num = 0;
m>1 && (num+=31);
m>2 && (num+=(((y%4==0 && y%100!=0) || y%400==0) ? 29 : 28))
m>3 && (num+=31);
m>4 && (num+=30);
m>5 && (num+=31);
m>6 && (num+=30);
m>7 && (num+=31);
m>8 && (num+=31);
m>9 && (num+=30);
m>10 && (num+=31);
m>11 && (num+=30);
num = num+d;
return num;
}
前两种方法虽然能正确算出结果,但没有办法判断输入的时间格式是否正确
所以在第二种方法的基础上又做了一些判断
- 方法3
function getDays(date){
let ymd = date.split('-');
let y = +ymd[0],//字符串转数字
m = +ymd[1],
d = +ymd[2];
let num = 0;
if(y<=0) return "输入年份格式错误";
if(m<=0||m>12) return "输入月份格式错误";
if(d<=0||d>31) return "输入日期格式错误";
if((m==2&&d==30)||(m==2&&d==31)) return "2月没有30或31天,请重新输入";
if(((m<=7&&m%2==0) || (m>=8&&m%2!=0)) && d>30) return "当前月份只有30天,请重新输入";
m>1 && (num+=31);
m>2 && (num+=(((y%4==0 && y%100!=0) || y%400==0) ? 29 : 28))
m>3 && (num+=31);
m>4 && (num+=30);
m>5 && (num+=31);
m>6 && (num+=30);
m>7 && (num+=31);
m>8 && (num+=31);
m>9 && (num+=30);
m>10 && (num+=31);
m>11 && (num+=30);
num = num + d;
return num;
}
//调用方式
getDays("2000-12-31");//366
本文介绍了一种计算特定日期是一年中第几天的三种方法,包括如何判断闰年和处理不同月份天数的算法。同时,文章还提供了代码实现,展示了如何使用JavaScript进行日期计算。
599

被折叠的 条评论
为什么被折叠?



