一个用到Boost中time_duration类而产生的bug

原创 2004年07月01日 17:39:00

测试小组提交在ClearQuest上的一个Defect引起了我的注意,当一个逻辑中输入日期为1940年以前的任何一个值时,会产生异常,程序逻辑不正常,直觉告诉我,这有可能是其中用到时间比较时出了错,果不其然,在经过仔细定位后发现一段程序:

而跟踪到这里时发现,计算出的这个diff居然是负值!

仔细查阅文档,发现我的boost date_time库在编译时选择了time_duration的ticks数据类型为__int64,此时发生了数据溢出:)

65*365*24*60*60*1000000000

   boost::posix_time::time_duration diff = util::ptime_now() - util::oletime_to_boosttime(dateOfBirth);
   if( diff.is_negative() || diff > boost::posix_time::hours(200*365*24) )
     return E_INVALIDARG;
   }

改成用DATE_DURATION来计算就没有问题了

    boost::gregorian::date_duration diff = boost::gregorian::day_clock::local_day()- util::oledate_to_boostdate(dateOfBirth);

    if( diff.is_negative() || diff > boost::gregorian::date_duration(200*365) )
     return E_INVALIDARG;
   }


Boost学习系列1----产生随机数

本文转自:http://blog.csdn.net/hellosijian/article/details/7459220 一. 概念 随机数被用在很多场合, 比如数值计算, 游戏, ...
  • Sunshine_in_Moon
  • Sunshine_in_Moon
  • 2016年02月01日 14:22
  • 1744

boost准模板库time_duration类的使用

# define BOOST_DATE_TIME_POSIX_TIME_STD_CONFIG #define BOOST_ALL_NO_LIB #include #include using name...
  • onlysingleboy
  • onlysingleboy
  • 2014年04月17日 00:33
  • 1133

关于boost库性能与安全的一些总结

最近工作上遇到几个问题都与boost库有关,所以做一下简单的总结。 1.多线程环境使用boost库引起的crash 项目中使用到boost::filesystem::is_regular_file...
  • tgxallen
  • tgxallen
  • 2017年03月08日 19:48
  • 590

利用boost计算运行时间间隔及获取系统时间并格式化

利用boost来获取当前时间又方便快捷,还不用考虑跨平台的问题。 1. 输出YYYYMMDD [cpp] view plain copy    #include        #defi...
  • luopeiyuan1990
  • luopeiyuan1990
  • 2016年01月28日 09:46
  • 2752

(七)boost库之单例类

一、boost.serialzation的单件实现     单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易...
  • liujiayu2
  • liujiayu2
  • 2016年03月15日 14:37
  • 471

boost::asio(1):封装了定时器类

用过MFC的童鞋都知道,SetTimer, KillTimer, OnTimer很好用。 但是boost::asio里面也有...
  • oldmtn
  • oldmtn
  • 2014年04月30日 10:33
  • 2676

项目开发中使用到工具类

时间工具类: package com.login.util; import java.text.SimpleDateFormat; import java.util.Calendar; i...
  • zhongqian123
  • zhongqian123
  • 2014年04月09日 11:56
  • 1169

boost准模板库time_duration类的使用(续)

#define BOOST_ALL_NO_LIB #define BOOST_DATE_TIME_POSIX_TIME_STD_CONFIG //启用纳秒级别的精确度 //#define BOOST_...
  • onlysingleboy
  • onlysingleboy
  • 2014年04月19日 00:33
  • 1187

caffe源码依赖的一些库

LevelDB库它是google实现的一个非常高效的Key-Value数据库。它是单进程的服务,性能非常高。它只是一个C/C++编程语言的库,不包含网络服务封装。caffe主要使用该数据库来存储传入训...
  • lanxueCC
  • lanxueCC
  • 2016年11月14日 17:00
  • 686

BOOST 库 thread类线程使用 [大三四八九月实习]

thread库为C++增加了线程处理能力,它提供简明清晰的线程、互斥量等概念,可以容易地创建多线程应用程序。thread库也是高度可移植的,它支持使用最广泛的windows和POSIX[Unix下应用...
  • misskissC
  • misskissC
  • 2013年08月09日 17:36
  • 9382
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个用到Boost中time_duration类而产生的bug
举报原因:
原因补充:

(最多只允许输入30个字)