日期转换(正推与倒推)
程序员文章站
2022-05-05 14:49:54
...
计算某个时间之后的n天是什么时候
题目为多组测试数据
第一行输入年,月,日 和 n
input
2018 08 13 1
2018 08 13 36
output
2018 08 14
2018 09 18
模板:
#include<stdio.h>
#include<iostream>
using namespace std;
int year,month,day,n;
int isLeap(int n)
{
if(n%100!=0&&n%4==0||n%400==0)
return 1;
else return 0;
}
int main()
{
int y[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31}};
while(~scanf("%d%d%d%d",&year,&month,&day,&n))
{
n=n+day;//使这个月回到最初状态(相当于从这个月0号开始)
int k;
for(k=month;n>y[isLeap(year)][k];k++)//然后进行整个月整个月的相加,零头就是这个月的第几号
{
n=n-y[isLeap(year)][k];
if(k==12)
k=0,year++;
}
printf("%04d %02d %02d\n",year,k,n);
}
return 0;
}
计算某个时间之前n天是什么时候
2143: 追忆
时间限制: 1 Sec 内存限制: 128 MB
提交: 122 解决: 66
题目描述
“别人总说我瓜,其实我一点也不瓜,大多数时候我都机智的一批“
现在是阳历2018/8/7,宝儿姐想起自己参加ACM整整1000天了。她想知道她刚入坑是什么时间。那么问题来了,请帮宝儿姐追忆一下某个时间之前n天是什么时间吧。
输入
多实例输入以EOF结束
每行四个数字year month day n用空格隔分别代表 当前年月日,以及查询天数。
输出
输出一个日期,年月日用空格隔开。
样例输入
2018 08 07 1 2018 08 07 8 2018 08 07 1000
样例输出
2018 08 06 2018 07 30 2015 11 11
模板:
#include<stdio.h>
#include<iostream>
using namespace std;
int year,month,day,n;
int isLeap(int n)
{
if(n%100!=0&&n%4==0||n%400==0)
return 1;
else return 0;
}
int main()
{
int y[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31}};
while(~scanf("%d%d%d%d",&year,&month,&day,&n))
{
while(n-day>=0)
{
if(month>1)
{
month--;
day+=y[isLeap(year)][month];
}
else
{
year--;
month=12;
day+=y[isLeap(year)][month];
}
}
day=day-n;
printf("%04d %02d %02d\n",year,month,day);//%md代表以十进制整数输出
} //宽度占m列,数据不足m列的左补空格,超过m列按实际位数输出
return 0;
}
上一篇: JS里面Data日期格式转换
下一篇: 字符串转日期,日期转字符串,日期比较