两个日期的天数差,解决这类问题的统一思想是:把原区间问题统一到确定区间上去,如本问题中将特定问题统一到与一个原点时间(0000年01月01日)的天数差,将两个日期与原点的日期天数差相减。利用数据预处理的好处是:在程序开始输入所有数据之前,将所有日期与原点日期的天数差保存起来,当数据真正开始输入时,只需要O(1)的时间将数据取出。

另一个需要注意的问题是闰年的计算方法

扩展:若要计算特定日期是当年的第几天,只需将该日期与原点是日期的天数差减去当年元旦与原点日期的天数差可得。

#include<stdio.h>
#define ISYEAP(x) x%100!=0 && x%4==0 || x%400==0 ? 1:0
int dayOfMonth[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 Day;int Month;int  Year;void nextDay(){//下一天       Day++;if(Day>dayOfMonth[Month][ISYEAP(Year)])//若日期超过了当月天数
        {Day = 1;Month++;//进入下一个月if(Month>12)//月数超过12
            {Month=1;Year++;//进入下一年
            }    }}
};
int buf[5001][13][32];//保存预处理的天数
int Abs(int x)
{return x<0 ? -x:x;
}
int main()
{Date tmp;int cnt=0;//天数计算tmp.Day=1;tmp.Month=1;tmp.Year=0;//初始化日期为0年1月1日while(tmp.Year!=5001){buf[tmp.Year][tmp.Month][tmp.Day]=cnt;//将改日与0年1月1日的天数差保存起来tmp.nextDay();//计算下一个日期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);printf("%d\n",Abs(buf[y1][m1][d1]-buf[y2][m2][d2])+1);}return 0;
}

转载于:https://www.cnblogs.com/Xilian/p/3635073.html

计算两个日期的天数差相关推荐

  1. 日期函数的计算(计算两个日期的天数差,除去工作日(工作日表自己定义))

    1.节假日表 CREATE TABLE [DicDate] (  [ID] [int] IDENTITY (1, 1) NOT NULL ,  [DateStr] [varchar10] NULL , ...

  2. 使用Calendar 计算两个日期相差天数,

    1.代码: public static void main(String[] args) throws ParseException {SimpleDateFormat sdf = new Simpl ...

  3. java 计算两个日期相差月数_Java简单计算两个日期月数差的方法

    本文实例讲述了Java简单计算两个日期月数差的方法.分享给大家供大家参考,具体如下: /** * 获取两个日期相差的月数 * @param d1 较大的日期 * @param d2 较小的日期 * @ ...

  4. 计算两个日期间隔天数(距离(2024-7-7)间隔:1999天)

    /*** 计算两个日期间隔天数*/ public class Demo5 {public static void main(String[] args) {//开始时间LocalDateTime st ...

  5. java计算两个月份差_Java编程实现计算两个日期的月份差实例代码

    本文实例主要实现计算两个日期的月份差,具体如下: package com.forezp.util; import org.joda.time.DateTime; import org.joda.tim ...

  6. python判断天数_Python计算两个日期相差天数的方法示例

    本文实例讲述了Python计算两个日期相差天数的方法.分享给大家供大家参考,具体如下: #!/usr/bin/python import time import sys def dateinput() ...

  7. mac numbers 计算两个日期时间天数 DUR2DAYS

    mac numbers 计算两个日期之间天数的函数 DUR2DAYS =DUR2DAYS($A - $B) +1

  8. java计算两个日期间隔天数

    /*** 计算两个日期间隔天数** @param startTime : 开始时间* @param endTime : 结束时间* @return*/public static int caculat ...

  9. C语言计算两个日期间隔天数

    C语言计算两个日期间隔天数 代码 总结 代码 // An highlighted block #include <stdio.h> #include <stdlib.h> in ...

最新文章

  1. MySQL 水平分区方案Spock Proxy
  2. Visual Studio 2015 编译与使用Boost库进行文件与目录的操作
  3. 机器学习必备:前20名Python人工智能和机器学习开源项目
  4. oracle 数据库_操作事项_05
  5. wordpress数据库转移
  6. elasticsearch问题解决之分片副本UNASSIGNED
  7. 重新认识Java包的命名规则
  8. js基础-7-数组去重的es5和es6写法、数组扁平化
  9. 《AutoCAD 2016中文版从入门到精通》——- 导读
  10. 射频电路设计中的热量分析
  11. wifi678响应超时服务器无应答,Win8宽带连接出现错误678的处理方法
  12. 【老九】【Python】文件操作与异常处理
  13. Blender图解教程:手把手教你独立游戏开发必备的极简式贴图法
  14. 企业视频直播平台有哪些呢
  15. 如何做好自己的职业规划?
  16. MATLAB函数——atan(x)和atan2(x)的区别
  17. 如何使用JavaScript检查数字是否为素数?
  18. G++ 中文使用教程
  19. Windows10下Node版本管理与随意切换
  20. java.lang.IllegalStateException: Error processing condition on com.alibaba.cloud.nacos.discovery.rea

热门文章

  1. UITextView 打入中文时,输入拼音会调用 textViewDidChange: 回调的解决方案
  2. 怎么把几个单独的pdf文件合并为一个pdf文件?怎么把多个pdf整合成同一个pdf?
  3. vue中实现拖拽排序
  4. java计算机毕业设计四六级在线考试系统源代码+数据库+系统+lw文档
  5. 小镇5.1.1--怪物狂欢季
  6. 2年前端(外包经历) 6月部分面试记录 (高级、资深岗位)
  7. OpenGL植物建模(附完整代码、注释清晰、分步讲解)
  8. webpack的css压缩不兼容IOS8问题探索
  9. android x86视频播放,RockPlayer2 (x86)视频播放器
  10. android分享朋友圈功能,微信小程序实现分享至朋友圈的功能来啦