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,各种时间名称的详细解释,并特别提示了常用的时间函数共享一块静态存储区的问题。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值