首页 > 代码库 > 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,各种时间名称的详细解释,并特别提示了常用的时间函数共享一块静态存储区的问题。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。