一年中的第几天
提示
给你一个字符串
date
,按YYYY-MM-DD
格式表示一个 现行公元纪年法 日期。返回该日期是当年的第几天。
第一版:
int dayOfYear(char* date) {int i=0;int year=0,month=0,day=0;while(date[i]!='-'){year*=10;year+=date[i]-'0';i++;}i++;year=(year%4==0&&year%100!=0)||year%400==0?1:0;while(date[i]!='-'){month*=10;month+=date[i]-'0';i++;}i++;while(date[i]!='\0'){day*=10;day+=date[i]-'0';i++;}if(month<3){switch(month){case 1:day=day;break;case 2:day+=31;break;}}else{switch(month){case 12:day+=30;case 11:day+=31;case 10:day+=30;case 9:day+=31;case 8:day+=31;case 7:day+=30;case 6:day+=31;case 5:day+=30;case 4:day+=31;case 3:day+=28+31;break;}if(year){day+=1;}}return day;
}
第二版;
int dayOfYear(char * date){int year = atoi(date);int month = atoi(date + 5);int day = atoi(date + 8);int amount[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {++amount[1];}int ans = 0;for (int i = 0; i < month - 1; ++i) {ans += amount[i];}return ans + day;
}