Boost.deadline_timer实现定时器功能时需注意的时区问题
来源:互联网 发布:哪个软件看泰剧最多 编辑:程序博客网 时间:2024/05/05 02:15
利用boost.deadline_timer() 可以很方便的实现定时器功能,详情参考:http://www.boost.org/doc/libs/1_57_0/doc/html/boost_asio/reference/deadline_timer.html
比如等待指定的时间数:
boost::asio::io_service ioservice;boost::asio::deadline_timer tm(ioservice, boost::posix_time::seconds(5)); //这里指定的是绝对时间,若指定相对时间可用time_duration指定时间段time.wait();这里也可以用deadline_timer的两个成员函数来指定需等待的时间,deadline_timer.expires_at(指定绝对时间),deadline_timer.expires_from_now(指定相对时间),在等待的时候可选择同步或者异步,time.wait()或者time.async_wait(handler),操作起来比较方便,而且还是跨平台的。
但是在这里有一个问题,比如我在做一个定时升级的工具时,我想指定升级工具的升级时间,比如是2015.4.12 00:00,按照官网上的做法是,(这里指定的是绝对时间)
boost::asio::io_service ioservice;//两种不同的时间格式boost::asio::deadline_timer tm(ioservice, boost::posix_time::time_from_string("2015-04-12 23:01:50");//boost::asio::deadline_timer tm(ioservice, boost::posix_time::from_iso_string("20150412T230150")); //以T为分隔符time.wait();这么做了后,你会发现程序根本没有等待到你指定的时间才开始相应的任务,而是提前很长一段时间,当时弄了很久尝试了很多方法还是百思不得其解,后来仔细的看了下文档后才发现原来boost中的时间是UTC时间,在程序中应该换成本地时间,所以得换算下时区才行或者用boost中提供的local_time,
boost::asio::io_service ioservice;boost::posix_time::ptime tm(boost::posix_time::time_from_string("2015-04-12 23:01:50")); tm -= boost::posix_time::time_duration(8, 0, 0); //北京时间转换为UTC时间, 相差8个小时boost::asio::deadline_timer timer(ioservice, tm);timer.wait();
0 0
- Boost.deadline_timer实现定时器功能时需注意的时区问题
- boost asio 定时器 deadline_timer cancel
- boost::deadline_timer
- boost deadline_timer
- boost::deadline_timer
- boost中的asio实现定时器功能
- boost::asio::deadline_timer
- boost::asio::deadline_timer
- boost::asio::deadline_timer(理解)
- GridView 实现删除功能时,注意的一点小问题
- [Boost基础]并发编程——asio网络库——定时器deadline_timer
- 用 select 实现 定时器功能,摘抄自boost.asio
- 时区转换时注意夏令时的影响
- 浅析boost::asio::deadline_timer运行机制
- boost asio deadline_timer 取消测试
- 关于php的时间相关函数需要注意时区问题
- 关于libevent定时器使用注意的问题
- 关于UGUI实现拖拽功能的接口(IBeginDragHandler、IEndDragHandler、IDragHandler )需注意的问题
- PHP学习笔记1
- 3_opencv2计算机视觉学习_基于类的图像处理
- 第六届南桥杯A组Java第一题 熊怪吃核桃
- 应用的相关测试平台
- libgdx iOS 项目应用名国际化
- Boost.deadline_timer实现定时器功能时需注意的时区问题
- Android学习之旅:Android版本号与Android level对应关系
- 【动态规划】[HDU1693] Eat the Trees
- 笔试笔试!!笔试笔试!!
- Convert Sorted Array to Binary Search Tree-LeetCode
- 条款21 必须返回对象时,别妄想返回其reference
- mysq密码忘记后重置
- 服务器性能调优-菜鸟初尝试
- oc小练习