题目描述
以 年-月-日
的形式给定一个日期,计算给定的日期是当年第几天。注意闰年二月有 2929 天。
输入格式
输入格式为 yyyy-mm-dd
,其中
yyyy
表示给定的年份,mm
表示给定的月份,dd
表示给定的日期。- 如果这些数字不足四位或二位,以
0
补足。 - 保证月份与日期都是合理的。
输出格式
单个整数:表示输入的日期是当年的第几天。
样例数据
输入:
2021-12-31
输出:
265
输入:
2022-01-01
输出:
1
解析
本题关键点:判断当前年是不是闰年(能被4或400整除,但是不能被100整除),如果是闰年,那么当年的2月就是29天,否则为28天。4,6,9,11月为30天,其它月份为31天。代码如下。
#include <iostream>
#include <string>
using namespace std;
int main(){
string s;
int y,m,d,ans,r;
cin>>s;
ans=0;
y=(s[0]-'0')*1000+(s[1]-'0')*100+(s[2]-'0')*10+(s[3]-'0');
m=(s[5]-'0')*10+(s[6]-'0');
d=(s[8]-'0')*10+(s[9]-'0');
//查询是否是闰年
if((y%4==0) && (y%100!=0) || (y%400==0)){
r=1;
}else{
r=0;
}
for(int i=1;i<m;i++){
if(i==4 || i==6 || i==9 || i==11){
ans+=30;
}else if(i==2){
if(r==1){
ans+=29;
}else{
ans+=28;
}
}else{
ans+=31;
}
}
ans+=d;
cout<<ans<<endl;
return 0;
}