首页 > 代码库 > C/C++中计算两个时间相差的天数

C/C++中计算两个时间相差的天数

在系统中经常用到time()函数获取系统时间,也就是通常所说的日历时间,这个时间是从1970年1月1日0时开始到现在的秒数。
问:已有日历时间t1和t2(假设t1>t2),如何计算他们之间相差的天数。
答:
          day = (t1+time_zone*60*60)/time_of_day - (t2+time_zone*60*60)/time_of_day
     其中time_zone表示时区间隔,比如说北京时间相比于标准时间就需要加8小时,可以参考下图。time_of_day为一天的秒数,等于24*60*60=86400.

                                        1970年1月1日0时
                                                     |<-----------------------t2--------------------------->| 
                                                     |<------------------------------------t1------------------------------>|
格林威治时间轴:                           |-------------------------------------------------------------------------------->
本地时间轴:       |------------------------------------------------------------------------------------------------------>
                           |<--time_zone-->|


陷阱一:
          day = (t1-t2)/time_of_day
     如果t2的小时时间超过了t1的小时时间,会出现计算的天数比实际的天数多1。
陷阱二:
          day = t1/time_of_day - t2/time_of_day
     这样计算的天数差将是标准时间相差的天数。

 附:
1. C、C++时间与日期函数,介绍各种时间的表达方式之间的转换,特别是文章刚开始的转换图,看的一目了然。
2. C++ time,各种时间名称的详细解释,并特别提示了常用的时间函数共享一块静态存储区的问题。