首页 > 编程语言 >【晴问算法】入门篇—日期处理—日期加法

【晴问算法】入门篇—日期处理—日期加法

时间:2024-03-24 17:03:10浏览次数:29  
标签:int 天数 31 month 晴问 入门篇 日期 year day

题目描述
给定一个日期DAY和一个正整数n,求日期DAY加上n天后的日期。
输入描述
第一行为给定的日期DAY(格式为YYYY-MM-DD,范围为1900-01-01<DAY≤2199-12-31),数据保证一定合法;
第二行为需要增加的天数n (1≤n≤10000)。
输出描述
以YYYY-MM-DD的格式输出增加了n天后的日期。
样例1
输入
2021-05-01

30
输出
2021-05-31
样例2
输入

2021-05-01

31
输出
2021-06-01

#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100;
int f[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};//存月份天数,为什么开辟13呢,让f[0]=0,使数组下标和月份一一对应
struct data{//涉及到日期的都定义结构体
	int year;
	int month;
	int day;
};


int main() {
	struct data p;//data类型的p变量
	scanf("%04d-%02d-%02d",&p.year,&p.month,&p.day);//按照题目的格式输入04d表示年份占四位
	int n;//增加的天数
	cin >> n;
	if((p.year / 4 == 0 && p.year % 100 != 0) || (p.year % 400 == 0)){//先判断是否闰年
		f[2] = 29;//闰年的话二月是29天
	}else{
		f[2] = 28;//否则二月是28天
	}
	if(p.day + n > f[p.month]){//如果增加的天数大于该月的天数
		p.month += 1;//月份加一,到下一个月
		p.day = 1;//并且天数置为1
	}else{
		p.day = p.day + n;//如果没超出该月,就直接加到天数
	}
	if(p.month > 12){//月份超过12月不符合
		p.year += 1;//所以就到了下一年
		p.month = 1;//同样月份置1从头计数
	}
	printf("%04d-%02d-%02d",p.year,p.month,p.day);//按照格式要求输出
	
	return 0;
}

标签:int,天数,31,month,晴问,入门篇,日期,year,day
From: https://blog.csdn.net/weixin_59725175/article/details/136988657

相关文章

  • 【晴问算法】提高篇—动态规划专题—最长公共子序列
    题目描述现有两个字符串s1​​​​与s2​,求s1​​​​与s2​​​​的最长公共子序列的长度(子序列可以不连续)。输入描述第一行为字符串s1​​,仅由小写字母组成,长度不超过100;第一行为字符串s2​​​,仅由小写字母组成,长度不超过100。输出描述输出一个整数,表示最长公共......
  • Hive 时间戳日期函数总结
    说明基于Hive的数据开发工作中,常常用到时间戳,日期各种格式转换,今天抽时间梳理一下。1. 获取当前UNIX时间戳函数:unix_timestampselectunix_timestamp();17112685562、UNIX时间戳转日期函数:from_unixtimeselectfrom_unixtime(1711268371,'yyyyMMdd');--20240324......
  • mysql中的数据类型大全纯干货------------时间日期类型
    简介(类型预览):在mysql8.0版本中支持的类型主要有:YEAR类型表示年DATE类型表示年,月,日TIME类型表示时,分,秒DATETIME类型表示年,月,日,时,分,秒TIMESTAMP类型通常表示带时区的年,月,日,时,分,秒数据类型单位占用字节格式下限上限YEAR年1YYY或YY19012155TIME时间3H......
  • c语言:日期识别1
    日期识别1任务描述X同学最近非常烦,因为他正面对一大堆日期数据愁眉不展,原因是那些日期书写的极其不规范,不仔细辨别根本认不清是哪一天。以下每个日期中的三个数,年月日的位置是不确定的,假设其中最大的数表示年份,1-12范围的数表示月份,1-31范围的数表示日期,如果月日的范围都......
  • AcWing 3498. 日期差值(每日一题)
    题目链接:3498.日期差值-AcWing题库有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天。输入格式输入包含多组测试数据。每组数据占两行,分别表示两个日期,形式为 YYYYMMDD。输出格式每组数据输出一行,即日期差值。数据范围年份范围 [......
  • 软件测试--设计函数实现输入日期显示星期几
    1.划分等价类:2.运用等价类划分法设计测试用例3.源程序代码1importjava.text.ParseException;2importjava.text.SimpleDateFormat;3importjava.util.Calendar;4importjava.util.Date;5importjava.util.Scanner;67publicclasstest1{8......
  • Jackson进行JSON序列化/反序列化添加Java 8的日期和时间库支持
     添加依赖包<!--Jackson进行JSON序列化/反序列化添加Java8的日期和时间库支持--> <dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-jsr310</artifactId> <version>2.13.0</version> ......
  • 时间和日期工具栏(二)
    importjava.math.BigDecimal;importjava.text.DateFormat;importjava.text.ParseException;importjava.text.ParsePosition;importjava.text.SimpleDateFormat;importjava.time.Instant;importjava.time.LocalDate;importjava.time.LocalDateTime;importjava.time.Zo......
  • js——Date()怎么将获取北京时间的日期,精确到时分秒
    JavaScript的Date对象可以获取本地时间,但不直接支持时区。要获取特定时区的时间,你需要进行时区转换。以下是一个函数,用于获取特定时区(如“Asia/Shanghai”,即北京时间)的当前日期和时间,精确到秒。functiongetBeijingTime(){constbeijing=newDate().toLocaleString('en......
  • Oracle函数7—日期函数(sysdate 、to_date、add_months、last_day......)
    文章目录1、日期获取(sysdate、current_date)2、设置时间格式(to_date、to_char)3、两个日期的差(直接加减)4、月份加减(add_months)5、取某月最后一天(last_day)6、两个日期相差月份数(months_between)7、获取下个周几是几号(next_day)8、获取指定时间的年或月或日(extract)9、时间的四......