积木

No sub title

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  140 Posts :: 1 Stories :: 11 Comments :: 0 Trackbacks

常用链接

留言簿(1)

我参与的团队

搜索

  •  

最新评论

阅读排行榜

评论排行榜

由于在处理游戏服务端时,必须考虑到使用的处理。在此,使用了boost中的时间相关的内容。
用boost的好处很多,下面是项目中对此的一点应用小结:
1) 支持跨平台。
2) 时间的精确度极高。取得毫秒级的绝对没问题。(似乎微秒级的也可以)
3) 用法方便。

using namespace boost::posix_time;
using namespace boost::gregorian;
//using boost::gregorian::date;

#include <boost/date_time/posix_time/posix_time.hpp>
#define BOOST_DATE_TIME_SOURCE


static ptime const epoch(date(1970, 1, 1));//一个基准点。
std::string currtimestamp = CommonHelper::format("%I64u", (WE::uint64)((microsec_clock::universal_time() - epoch).total_milliseconds()));
//提示:
   1) microsec_clock::universal_time()是取得格林威治时间。
   2) 如果是:microsec_clock::local_time()则取得的是本地时间。
   3) 如果想取得北京时间,则只需要加上8小时即可。microsec_clock::universal_time() + hours(8);
   4) 上面的语句是计算当前格林威治时间的时间戳。

4) boost::posix_time::ptime 因重载了许多操作符运算。因此,对它的使用就如同基本类型一样。如:可以很方便计算两点时间点的差距。

boost::posix_time::ptime pt1(date(xxxx, x, x), time_duration(10, 1, 23));
//上面也可以这样写:boost::posix_time::ptime pt1(date(xxxx, x, x), time_duration(hours(10), minutes(1), seconds(23)));
//再比如:boost::posix_time::ptime pt1(date(xxxx, x, x), hours(10));如果想要详细了解,请自行研究boost源码。

boost::posix_time::ptime pt2(.....);//这边的构造函数参数就不写了。请自行参考上面的语句。

time_duration td = pt1 - pt2;//注意:ptime是不支持 + 的。因为它没有重载该操作。计算它们的加,是没有意义的。而 - 有意义。所以可如此操作。

5) 取得日期,取得时间都很方便。


此次,就暂时就写这么多吧。
posted on 2012-11-06 20:18 Jacc.Kim 阅读(5787) 评论(0)  编辑 收藏 引用 所属分类: VC / C++

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理