二 日期类问题

此类问题解题思路: 定一个锚点日期,如0年1月1日,先算出往后多少年内每一日子距离这个锚点的天数,例如要算两个日期间天数时,便可以将两个日期距离锚点日期之间的天数相减,即可得到。

题目描述:
有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天
输入:
有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD
输出格式:
每组数据输出一行,即日期差值。
样例输入:
20180428
20181213
样例输出:
230
来源:
2009年上海交通大学计算机研究生机试真题

#include<bits/stdc++.h>
#define ISYEAP(x) x%100!=0 && x%4==0 || x%400==0 ? 1:0
//定义宏判断是否是闰年,方便计算每月天数
using namespace std;int Day[13][2] = {0,0,31,31,28,29,31,31,30,30,31,31,30,30,31,31,31,31,30,30,31,31,30,30,31,31
};//预存每月的天数,注意二月配合宏定义作特殊处理struct Date{//日期类,方便日期的推移int d; // dayint m; // mouth int y; // yearvoid next_Day(){//计算下一天的日期d++;if(d>Day[m][ISYEAP(y)]){//若日数超过了当月最大日数d = 1;m++;//进入下一月if(m>12){//月数超过12m = 1;y++;//进入下一年}}}
};int buf[5001][13][32]; //保存预处理的天数
int abs(int x){//求绝对值return x < 0 ? -x:x;
}int main()
{Date tmp;int cnt = 0;//天数计数tmp.d = 1;tmp.m = 1;tmp.y = 0;//初始化日期类对象为0年1月1日while(tmp.y < 5001){//日期不超过5000年buf[tmp.y][tmp.m][tmp.d] = cnt;//将该日与0年1月1日的天数差保存起来tmp.next_Day();//计算下一天日期cnt++;//计数器累加,每经过一天计数器即+1,代表与原点日期的间隔又增加一天} int d1, m1, y1;int d2, m2, y2;while(scanf("%4d%2d%2d", &y1, &m1, &d1) != EOF){scanf("%4d%2d%2d", &y2, &m2, &d2);//读入要计算的两个日期cout << abs(buf[y2][m2][d2]-buf[y1][m1][d1])+1 << endl;//用预处理的数据计算两日期差值,注意需对其求绝对值}return 0;
}

扩展:

假如问题需要我们输出某个特定的日期,是那年的第几天,只需要用该日期距离锚点日期的天数 — 那年元旦距离锚点日期的天数,即可。

结束


【日期类问题】例2.1日期差值相关推荐

  1. java的时间日期类_Java基础学习:日期时间类

    Date 类 所在的包:java.util.Date Date 类表示特定的瞬间,精确到毫秒.创建对象的值为从1970年1月1日00:00:00 到当前系统显示时间所经历的毫秒数. 例如:public ...

  2. java日期类的计算问题_java日期计算(Calendar类)

    昨天学了java日期的格式器,主要是用SimpleDateFormat进行格式化.解析.但这还仅停留在日期的查看(调整显示格式)阶段,更重要的是日期的操作.今天继续学习,记录如下: 今天主要学习的日期 ...

  3. java中的常用日期类_Java中的常用日期类说明

    日期类常用的有三个,Date类,Calendar(日历)类和日期格式转换类(DateFormat) Date类中的大部分的方法都已经过时,一般只会用到构造方法取得系统当前的时间.public clas ...

  4. Access计算日期字段中数据与当前日期的差值并将其显示在指定字段中

    本文记录了用于比较Access中,记录的日期数据,和当前日期相差几天的设置方法.当前是2020年11月27日 最终效果如下截图: 注意,这个是采用  "创建"→"查询向导 ...

  5. 定义日期类,根据输入的日期计算明天日期,上机实践--我的c++之路

    //这个程序有缺点,不能输入每个月最后一天.否则计算出错...可是不知道怎么才能解决,有日期数据类型就好了.以后学习过程中改进吧 #include<iostream.h> class cd ...

  6. 王道论坛计算机考研机试指南怎么样,王道论坛计算机考研机试指南 二 日期类问题...

    二日期类问题 例2.3 日期差值 (九度教程第6题) 时间限制:1秒 **内存限制:32兆 ** 特殊判题:否 题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数 ...

  7. 日期类的实现(C++)

    目录 注意: 1.作用域 2.实例化 3.this指针 4.std 1).std是什么? 2).为什么将cout放到名字空间std中? 3).std都是什么时候使用? 5.C语言"/&quo ...

  8. 三代日期类的基本使用

    三代日期类的基本使用 文章目录 三代日期类的基本使用 一.第一代日期类Date 二.第二代的日期类Calendar 二.第三代的日期类LocalDateTime 总结 一.第一代日期类Date Dat ...

  9. C++类与对象入门实践(日期类的实现)

    日期类 class Date { public://成员函数private:int _year;int _month;int _day; }; 日期类成员对象:  年.月.日 实现功能:  成员函数 ...

  10. 【愚公系列】2023年01月 Java教学课程 043-时间日期类

    文章目录 一.时间日期类 1.Date类 2.Date类常用方法 3.SimpleDateFormat类 4.时间日期类练习 一.时间日期类 1.Date类 计算机中时间原点 1970年1月1日 00 ...

最新文章

  1. 基于OpenCV的图像阴影去除
  2. 2020年世界机器人报告
  3. 【JVM调优】JVM的运行参数
  4. python字符串中某个字符修改_Python中修改字符串的四种方法
  5. 聊天机器人突然火了,能解决那方面的需求吗?
  6. [Linux] 编写Dockerfile文件自动构建镜像
  7. 2019.4.17 映纷创意首页铺设练习
  8. 最浅显易懂的使用nginx实现端口映射的教程
  9. 2019黑马python面试资料_2019最新Python黑马头条推荐系统项目
  10. Exsi 5.0 物理端口捆绑+VRRP+DvSwitch配置
  11. IP头TCP头的checksum校验和计算
  12. 读取.Properties配置文件
  13. 人脸识别撞脸名画_范冰冰深夜晒自拍撞脸荷兰名画,三万元名牌包抢镜,两套餐具亮了...
  14. 常见数据分析误区有哪些
  15. 蓝奏云无视密码强制下载器
  16. 数据挖掘第三版课后习题
  17. JS 页面繁简字转换
  18. java iplimage 头文件_在javacv中将IplImage转换为Mat
  19. MySQL数据库:表结构优化
  20. Portrait Photography: Ten Styles with One Light 人像摄影:一种风格的十种风格 Lynda课程中文字幕

热门文章

  1. javascript---DOM---事件
  2. BUAAOO电梯作业总结
  3. [UE4]虚幻引擎UE4如何制作可拖动(Drag and Drop)的背包(Scrollbox)(转载)
  4. qutebrowser 只用键盘操作的浏览器
  5. node 无脑生成小程序二维码图
  6. Object有哪些公用方法?
  7. 跨云应用部署:在云存储服务之间复制文件
  8. 如何在有限的时间内编写完整有效的测试用例?
  9. SELinux系列(十五)—auditd日志使用方法详解
  10. Linux运维问题解决(2)——Linux设置定时重启系统的方法:定时任务crontab 和 编写脚本