目录
总结:
闰年的判断方式:
可以被4除尽的同时不被100除尽,或者可以被400除尽。
if(y%4==0&&y%100!=0||y%400==0)
内容:
这个题我的解法有点简单。
1154. 一年中的第几天
简单
给你一个字符串 date ,按 YYYY-MM-DD 格式表示一个 现行公元纪年法 日期。返回该日期是当年的第几天。
示例 1:
输入:date = "2019-01-09"
输出:9
解释:给定日期是2019年的第九天。
示例 2:
输入:date = "2019-02-10"
输出:41
提示:
date.length == 10
date[4] == date[7] == '-',其他的 date[i] 都是数字
date 表示的范围从 1900 年 1 月 1 日至 2019 年 12 月 31 日
我的代码如下,没什么可说的了。
int dayOfYear(char* date) {
//关键在于判断闰年
int y,m,d;
int i;
int t=0;
int j=0;
int s=0;
for(i=0;i<4;i++)
{
t*=10;
t+=(date[i]-'0');
}
y=t;
t=0;
if(y%4==0&&y%100!=0||y%400==0)
{
j=1;
}
for(i=5;i<7;i++)
{
t*=10;
t+=(date[i]-'0');
}
m=t;
t=0;
for(i=8;i<10;i++)
{
t*=10;
t+=(date[i]-'0');
}
d=t;
t=0;
s=d;
if(m>1)
{
switch(m){
case 2:s+=31;break;
case 3:s+=59;break;
case 4:s+=90;break;
case 5:s+=120;break;
case 6:s+=151;break;
case 7:s+=181;break;
case 8:s+=212;break;
case 9:s+=243;break;
case 10:s+=273;break;
case 11:s+=304;break;
case 12:s+=334;break;
}
if(m>=3&&j)
{
s+=1;
}
}
return s;
}