日期问题合集
日期问题合集
求解两个日期之间的差值
有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天。
输入格式
输入包含多组测试数据。
每组数据占两行,分别表示两个日期,形式为 YYYYMMDD
。
输出格式
每组数据输出一行,即日期差值。
数据范围
年份范围
保证输入日期合法。
输入样例:
输出样例:
回文日期问题
在日常生活中,通过年、月、日这三个要素可以表示出一个唯一确定的日期。
牛牛习惯用
显然:一个日期只有一种表示方法,而两个不同的日期的表示方法不会相同。
牛牛认为,一个日期是回文的,当且仅当表示这个日期的
现在,牛牛想知道:在他指定的两个日期之间(包含这两个日期本身),有多少个真实存在的日期是回文的。
一个
例如:
- 对于
年 月 日,用 位数字 表示,它不是回文的。 - 对于
年 月 日,用 位数字 表示,它是回文的。 - 对于
年 月 日,用 位数字 表示,它不是回文的。
输入格式
输入包括两行,每行包括一个
第一行表示牛牛指定的起始日期
保证
输出格式
输出共一行,包含一个整数,表示在
输入样例:
输出样例:
日期一共8位,那么我们可以枚举前4位来生成回文日期,然后判断:
- 回文日期是否合法
- 回文日期是否在给定的两个日期范围之内
已知年份和天数,求是这年的几月几日
给定一个年份
注意闰年的
满足下面条件之一的是闰年:
- 年份是
的整数倍,而且不是 的整数倍; - 年份是
的整数倍。
输入格式
输入的第一行包含一个整数
输入的第二行包含一个整数 $ d
输出格式
输出两行,每行一个整数,分别表示答案的月份和日期。
数据范围
$ 1900 \le y \le 2015
输入样例1:
输出样例1:
输入样例2:
输出样例2:
思路
就是从一月开始枚举,如果剩余天数能减去整月就减,减不了就确定了月份和天数的答案了。还是要注意一下二月和闰年的特判。
给出一个日期,输出下一天的日期
编写一个日期类,要求按 xxxx-xx-xx
的格式输出日期,实现加一天的操作。
输入格式
第一行包含整数
每组数据占一行,包含
输出格式
每组数据输出一行,一个结果,按 xxxx-xx-xx
的格式输出,表示输入日期的后一天的日期。
数据范围
输入日期保证合法且不会出现闰年。
年份范围
输入样例:
输出样例:
只需要特判一下:
- 本年的最后一天
- 本月的最后一天
- 正常日期
给出年份 和一年中的第 天,算出第 天是几月几号。
给出年份
输入格式
输入包含多组测试数据。
每组数据占一行,包含两个整数
输出格式
每组数据输出一行一个结果,格式为 yyyy-mm-dd
。
数据范围
输入最多包含
$ 1 \le y \le 3000
数据保证合法。
输入样例:
输出样例:
和给出年份与天数,确定几月几日是一模一样的题目。就是直接模拟即可。如果剩余天数大于当前月的天数,更新月份和剩余天数;如果剩余天数不足当前月的天数,更新月份,确定月份和当前月的几号,相当于确定了答案,退出。
从当前日期开始,到指定日期,确定是星期几
今天是
输入格式
共两行,第一行包含一个整数
第二行包含一个整数
输出格式
输出询问日期是星期几。
注意,要用英文表示。
周一到周日的英文表示如下:
数据范围
$ 4 \le m \le 12
保证日期合法。
输入样例:
输出样例:
其实这道题的本质就是求解这两个日期之间的天数是多少。确定好之后,天数Mod7,即可确定是星期几。但这里有个细节需要处理一下:当前开始的日期是星期四,因此week数组中的顺序应该是4567123
3391. 今年的第几天? - AcWing题库
输入年、月、日,计算该天是本年的第几天。
注意闰年的
满足下面条件之一的是闰年:
- 年份是
的整数倍,而且不是 的整数倍; - 年份是
的整数倍。
输入格式
输入包含多组测试数据。
每组数据占一行,包含三个整数
输出格式
每组数据输出一个整数,占一行,表示输入给定的年、月、日对应本年的第几天。
数据范围
$ 1 \le Y \le 3000
保证所有日期都是合法的。
输入样例:
输出样例:
没啥好说的,从1~m-1月先枚举求得整月份的天数,再单独加上最后的零散天数即可.
属于是典型的已知年月日,求解时本年度的第几天。
当然,如果本题扩展到不仅限于本年份了,即可能从1999年1月1日开始到当前年月日经过了多少天类似这种要求,那么就变成了求解两个具体日期相隔多少天的问题了。那么就是像之前类似的题目求解方法一样,从1年1月1日开始计算(即从头)到第一个日期求解天数day1,同理求解从头到第二个日期的天数day2,相减作差即可得到答案。
3489. 星期几 - AcWing题库
已知
现在给定一个日期,请你判断是星期几。
注意闰年的
满足下面条件之一的是闰年:
- 年份是
的整数倍,而且不是 的整数倍; - 年份是
的整数倍。
输入格式
输入包含多组测试数据。
每组数据占一行,包含一个整数
月份
输出格式
每组数据输出一行结果,输出一个字符串表示给定日期是星期几。
周一至周日依次如下所示:
数据范围
给定日期保证合法。
每个输入最多包含
输入样例:
输出样例:
这个题本质还是已知具体的日期,求从元年1月1日(包含)到现在经过的天数,然后根据初始的时间节点是星期几,确定当前日期是星期几的问题。注意月份数字与字符串哈希表的写法、月份和月份天数的数组打表写法、星期的打表写法等细节。
1341. 十三号星期五 - AcWing题库
十三号星期五真的很不常见吗?
每个月的十三号是星期五的频率是否比一周中的其他几天低?
请编写一个程序,计算
测试的时间段将会开始于
一些有助于你解题的额外信息:
年 月 日是星期一。- 在一年中,
月、 月、 月、 月每个月 天, 月平年 天,闰年 天,其他月份每个月31天。 - 公历年份是
的倍数且不是 的倍数的年份为闰年,例如 年是闰年, 年不是闰年。 - 公历年份是整百数并且是
的倍数的也是闰年,例如1700年,1800年,1900年,2100年不是闰年,2000年是闰年。
输入格式
共一行,包含一个整数
输出格式
共一行,包含七个整数,整数之间用一个空格隔开,依次表示星期六,星期日,星期一,星期二,星期三,星期四,星期五在十三号出现的次数。
数据范围
输入样例:
输出样例:
抽象日期模型还是:已知初始状态的日期年月日,求一个新的日期是星期几。
那么我们的思路还是求解这个新的日期与起点的天数,去取模7计算星期几。
3573. 日期累加 - AcWing题库
设计一个程序能计算一个日期加上若干天后是什么日期。
输入格式
第一行包含整数
每组数据占一行,包含四个整数
输出格式
每组数据输出一行,一个结果,每行按 yyyy-mm-dd
的格式输出。
数据范围
$ 1000 \le y \le 3000
保证输入日期合法。
输入样例:
输出样例:
抽象这道题,就是已知当前日期,求若干天后的日期。一种比较容易想到的写法就是不断让天数--,直到走到那一天。但会TLE
另一种写法就是先把总天数算出,然后从m这个月开始枚举,边枚举边更新剩余天数等信息。
AcWing 3498. 日期差值 - AcWing
有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天。
输入格式
输入包含多组测试数据。
每组数据占两行,分别表示两个日期,形式为 YYYYMMDD
。
输出格式
每组数据输出一行,即日期差值。
数据范围
年份范围
保证输入日期合法。
输入样例:
输出样例:
典型的求两个具体日期之间的差值的问题。思路就是分别求出两个日期距离1年1月1日经过的天数,然后相减+1即可。
__EOF__

本文链接:https://www.cnblogs.com/sdnu-dfl/p/17294360.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理