ACE_Time_Value使用注意事项(续)

9 篇文章 1 订阅

ACE_Time_Value保存了两个时间属性:秒和毫秒,各自用一个32bit有符号整数来存储。ACE_Time_Value本身可以用来表达相对时间和绝对时间,用于相对时间时它表示两个绝对时间之间的差值(秒的差值和毫秒的差值,注意这两个属性是独立的),由于32bit整数最大值的限制,它们各自有自己的差值上限,大约是正负68年(用秒属性时),正负25天(用毫秒属性时)的样子。当用于表示绝对时间时,它表示从1970年1月1日到当前时间的历时秒数,其秒值最大只能表示68年,也就是到2038年(1月19日03:14:07,星期二(UTC)),这就是同样著名的2038年时间跳转问题(和著名的千年虫问题相比)。

知道了这些限制之后,当我们使用ACE_Time_Value的sec(),msec()两个方法来获取时间差时,要特别注意它们的时间跃迁问题。由于所有的绝对时间都可以对应到某个ACE_Time_Value值,所以当你需要测试这个时间跳跃问题对你应用的影响时,可以手工将系统时间设为某个特定时间,然后运行你的应用,看看时间跳转时对你的应用有没有影响。


我简单试了一下,找了两个时间会发生跳跃的点(主要是毫秒跳跃;秒跳跃的可能性不大,除非你的应用经常要进行超过68年以上的时间差值计算!),可以用来做毫秒时间跳跃的测试场景。

1 当使用long来存储msec()的值时

2013年6月1日 21:49, msec()的值从负值跨过0到正值

2013年6月26日 18:20, msec()的值从正的最大值0x7F FF FF FF跳到负的最大值

 

2 当使用unsigned long来存储msec()的值时

2013年6月1日 21:49, msec()的值从最大值(0xFF FF FF FF)跳变到0

2013年6月26日 18:20, msec()的值(跨过0x7F FF FF FF)继续增加

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值