给你一个按 YYYY-MM-DD
格式表示日期的字符串 date
,请你计算并返回该日期是当年的第几天。
通常情况下,我们认为 1 月 1 日是每年的第 1 天,1 月 2 日是每年的第 2 天,依此类推。每个月的天数与现行公元纪年法(格里高利历)一致。
示例 1:
输入:date = "2019-01-09" 输出:9
示例 2:
输入:date = "2019-02-10" 输出:41
示例 3:
输入:date = "2003-03-01" 输出:60
示例 4:
输入:date = "2004-03-01" 输出:61
提示:
date.length == 10
date[4] == date[7] == '-'
,其他的 date[i]
都是数字。date
表示的范围从 1900 年 1 月 1 日至 2019 年 12 月 31 日。C++
class Solution {
public:
int dayOfYear(string date)
{
int year=atoi(date.substr(0,4).c_str());
int month=atoi(date.substr(5,2).c_str());
int day=atoi(date.substr(8,2).c_str());
map tmp;
tmp[1]=31;
tmp[3]=31;
tmp[4]=30;
tmp[5]=31;
tmp[6]=30;
tmp[7]=31;
tmp[8]=31;
tmp[9]=30;
tmp[10]=31;
tmp[11]=30;
if(1==month)
{
return day;
}
else if(2==month)
{
return tmp[1]+day;
}
else
{
int pre=0;
if(year!=1900 && year%4==0)
{
pre=tmp[1]+29;
}
else
{
pre=tmp[1]+28;
}
for(int i=3;i
python
class Solution:
def dayOfYear(self, date: str) -> int:
year=int(date[0:4])
month=int(date[5:7])
day=int(date[8:])
dic={1:31,3:31,4:30,5:31,6:30,7:31,8:31,9:30,10:31,11:30}
if 1==month:
return day
elif 2==month:
return dic[1]+day
else:
pre=dic[1]
if year!=1900 and 0==year%4:
pre+=29
else:
pre+=28
for i in range(3,month):
pre+=dic[i]
return pre+day