在系统中经常用到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
这样计算的天数差将是标准时间相差的天数。
附:
2.
C++ time,各种时间名称的详细解释,并特别提示了常用的时间函数共享一块静态存储区的问题。