日期计算器 日期差值问题

本文探讨了一个经典算法问题——日期计算器,旨在计算两个日期之间的天数差。重点在于处理平年和闰年带来的复杂性,通过创建二维数组存储不同月份的天数,并设计判断闰年的函数。通过加法运算和日期进位来逐步接近目标日期,从而求得天数差。欢迎分享更多解决方案。
摘要由CSDN通过智能技术生成

这是一道很经典的算法题,简单来说就是给你两个日子然后算出它们之间差了几天(连续的日子之间算作两天),正好最近也需要制作这么一个小程序,最近看到了一个比较好的解决方案。

这道题的难度在于细节。平年和闰年二月的天数不同,每个月的天数也不同。

它首先把平年和闰年的月份中的日子用二维数组存起来,平年就是month[ ][0],闰年就是month[ ][1],这样设置很方便,也很好表示;

int month[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}};

然后做一个判断平年闰年的函数,这个return的意思就是,如果是闰年则返回1,平年则返回0。闰年的定义是可以被4整除且不能被100整除 或者可以被400整除;

bool IsLeap(int year)
{
    return((year%4==0 && year%100!=0) || (year%400==0));
}

输入两个日期之后,用取模和除法运算分离出年月日;

    y1=time1/10000; m1=time1%10000/100; d1= time1%100;
    y2=time2/10000; m2=time2%10000/100; d2= time2%100;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值