boost库学习之时间日期
Boost date time使用
- 1:boost date类
- 2:boost timer类
- timer类
- progress_timer类
- progress_display类
- 示例代码
- 3:boost ptime类
- 初始化ptime类
- ptime类和time_t / tm的转换
- ptime转换成字符串
- 示例代码
1:boost date类
1: 初始化为指定年月日的日期(例如2019年6月6日)
date d1(2019, 1, 1);/*2019年1月1日*/date d2 = from_string("2019-2-2");/*2019年2月2日*/date d3 = from_string("2019/3/3");/*2019年3月3日*/date d4 = from_undelimited_string("20190404");/*2019年4月4日*/
2: 初始化为当前日期,调用获取本地日期或者GMT日期的接口获取当前日期。
date d5 = day_clock::local_day();/*本地日期,跟时区相关,北京时间为东八区*/date d6 = day_clock::universal_day();/*GMT日期*/
3: 转换成字符串
cout << to_simple_string(d1) << endl;/*2019-Jan-01*/cout << to_iso_string(d2) << endl;/*20190202*/cout << to_iso_extended_string(d3) << endl;/*2019-03-03*/cout << d4 << endl;/*2019-Apr-04*/
4: 示例代码
/*boost 时间日期库,可定义时间点,时间段,时间长度,时间加减*/
void boost_test_date()
{date d1(2019, 1, 1);/*2019年1月1日*/date d2 = from_string("2019-2-2");/*2019年2月2日*/date d3 = from_string("2019/3/3");/*2019年3月3日*/date d4 = from_undelimited_string("20190404");/*2019年4月4日*/date d5 = day_clock::local_day();/*本地日期,跟时区相关,北京时间为东八区*/date d6 = day_clock::universal_day();/*GMT日期*/cout << to_simple_string(d1) << endl;/*2019-Jan-01*/cout << to_iso_string(d2) << endl;/*20190202*/cout << to_iso_extended_string(d3) << endl;/*2019-03-03*/cout << d4 << endl;/*2019-Apr-04*/cout << d5 << endl;/*2019-Jun-12*/cout << d6 << endl;/*2019-Jun-12*/
}
2:boost timer类
timer类
主要通过elapsed()函数获取从timer对象构造到elapsed函数调用时刻所经过的时间。
timer t;cout << "elapsed_max :" << t.elapsed_max() / 3600 << "h" << endl;cout << "elapsed_min :" << t.elapsed_min() << "s" << endl;cout << "time elapsed:" << t.elapsed() << "s" << endl;/*打印自构造以来经过的时间*/
progress_timer类
progress_timer类析构的时候会打印出对象生存时间,如果在构造的时候传入输出流,打印信息将打印到传入的输出流,例如在{…}的代码范围内构造一个progress_timer对象,作用域结束时将打印出经过的时间。
/*progress_timer对象析构时会打印出从构造到析构经过的时间*/stringstream ss;progress_timer tm;{/*构造函数中传入stringstream,析构的时候将输出定向到stringstream*/progress_timer tm_ss(ss);}cout << ss.str();
progress_display类
在命令行显示出进度条,对progress_display对象pd进行++pd操作可以更新进度条进度
std::vector<string> vec;vec.push_back("1"); vec.push_back("2"); vec.push_back("3"); vec.push_back("4");progress_display pd(vec.size());for (auto& x : vec)++pd;/*进度条调整进度*/
示例代码
#include <boost/date_time/gregorian/gregorian.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/progress.hpp>
#include <iostream>
using namespace std;
using namespace boost;
void boost_test_timer()
{timer t;cout << "elapsed_max :" << t.elapsed_max() / 3600 << "h" << endl;cout << "elapsed_min :" << t.elapsed_min() << "s" << endl;cout << "time elapsed:" << t.elapsed() << "s" << endl;/*打印自构造以来经过的时间*/
}void boost_test_progress_timer()
{/*progress_timer对象析构时会打印出从构造到析构经过的时间*/stringstream ss;progress_timer tm;{/*构造函数中传入stringstream,析构的时候将输出定向到stringstream*/progress_timer tm_ss(ss);}cout << ss.str();
}void boost_test_progress_display()
{std::vector<string> vec;vec.push_back("1"); vec.push_back("2"); vec.push_back("3"); vec.push_back("4");progress_display pd(vec.size());for (auto& x : vec)++pd;/*进度条调整进度*/
}
3:boost ptime类
初始化ptime类
1:通过指定日期和时间间隔初始化
time_duration td(2, 2, 2, 200);td = duration_from_string("2:2:2:200");/*2小时,2分钟,2秒钟,200微妙*/ptime t1(date(2019, 1, 1), td);/*2019年1月1日2时2分2秒,200微妙被忽略*/
2:从字符串中获取时间
ptime t4 = from_iso_extended_string("2019-06-11T23:00:00.200000");/*从字符串中获取时间*/
3:从工厂类函数获取时间
ptime t2 = second_clock::local_time();/*获取本地时间,与时区相关,北京时间为东八区*/ptime t3 = microsec_clock::universal_time();/*GMT时间*/
ptime类和time_t / tm的转换
1: ptime和time_t之间的转换
time_t tt;tt = to_time_t(t3);/*将ptime转化成time_t类型*/ptime t6 = from_time_t(tt);/*将time_t转化为ptime*/
2: ptime和tm之间的转换
tm t;t.tm_year = 119/*1900 + 119,从1900开始到目前时间点经过的年数*/;t.tm_mon = 1;/*从零开始计算,0为1月,1为2月*/t.tm_mday = 1; t.tm_hour = 20; t.tm_min = 20; t.tm_sec = 20;ptime t5 = ptime_from_tm(t);/*将tm结构体(年月日时分秒)转化成ptime*/t = to_tm(t5);/*ptime转化成tm结构体*/
ptime转换成字符串
cout << to_simple_string(t1) << endl;/*2019-Jan-01 02:02:02.200000*/cout << to_iso_string(t2) << endl;/*20190611T230630*/cout << to_iso_extended_string(t3) << endl;/*2019-06-11T15:06:30.422962*/cout << t4 << endl;/*2019-Jun-11 23:00:00.200000*/cout << t5 << endl;/*2019-Feb-01 20:20:20*/cout << to_tm(t1).tm_hour << endl;/*2*/cout << to_time_t(t1) << endl;/*1546308122*/
示例代码
#include <boost/date_time/gregorian/gregorian.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
#include <iostream>
using namespace std;
using namespace boost;
using namespace boost::gregorian;
using namespace boost::posix_time;
void boost_test_time()
{time_duration td(2, 2, 2, 200);td = duration_from_string("2:2:2:200");/*2小时,2分钟,2秒钟,200微妙*/ptime t1(date(2019, 1, 1), td);/*2019年1月1日2时2分2秒,200微妙被忽略*/ptime t4 = from_iso_extended_string("2019-06-11T23:00:00.200000");/*从字符串中获取时间*/ptime t2 = second_clock::local_time();/*获取本地时间,与时区相关,北京时间为东八区*/ptime t3 = microsec_clock::universal_time();/*GMT时间*/tm t;t.tm_year = 119/*1900 + 119,从1900开始到目前时间点经过的年数*/;t.tm_mon = 1;/*从零开始计算,0为1月,1为2月*/t.tm_mday = 1; t.tm_hour = 20; t.tm_min = 20; t.tm_sec = 20;ptime t5 = ptime_from_tm(t);/*将tm结构体(年月日时分秒)转化成ptime*/t = to_tm(t5);/*ptime转化成tm结构体*/time_t tt;tt = to_time_t(t3);/*将ptime转化成time_t类型*/ptime t6 = from_time_t(tt);/*将time_t转化为ptime*/cout << to_simple_string(t1) << endl;/*2019-Jan-01 02:02:02.200000*/cout << to_iso_string(t2) << endl;/*20190611T230630*/cout << to_iso_extended_string(t3) << endl;/*2019-06-11T15:06:30.422962*/cout << t4 << endl;/*2019-Jun-11 23:00:00.200000*/cout << t5 << endl;/*2019-Feb-01 20:20:20*/cout << to_tm(t1).tm_hour << endl;/*2*/cout << to_time_t(t1) << endl;/*1546308122*/
}
boost库学习之时间日期相关推荐
- Boost库学习笔记(二)算法模块-C++11标准
Boost库学习笔记(二)算法模块-C++11标准 一.综述 Boost.Algorithm是一系列人通用推荐算法的集合,虽然有用的通用算法很多,但是为了保证质量和体积,并不会将太多通用算法通过审查测 ...
- Boost库学习笔记(一)安装与配置
Boost库学习笔记(一)安装与配置 1. 获取boost https://www.boost.org/users/history/version_1_79_0.html 任选其一 boost的目录结 ...
- Boost库学习の时间日期处理
记录一下Boost程序库的学习 系统:win11下WSL2,ubuntu子系统 安装Boost程序库 sudo apt-get install libboost-dev 安装好了以后就可以在/usr/ ...
- boost库学习入门篇
学习及使用Boost库已经有一段时间了,Boost为我的日常开发中带来了极大的方便,也使得我越来越依赖于boost库了.但boost功能太多,每次使用还是得翻看以前的 资料,所以为了以后可以更方便的使 ...
- Boost库学习(0)
2019独角兽企业重金招聘Python工程师标准>>> 最近看了C++11标准,感觉C++的变得更强大了,连语法都有了点变化.(最后一次用C++可能还是在学校时,工作中一直用的是C, ...
- c++ boost库学习boost::any用法
一.boost::any 基本知识 1.1 boost::any() 作用:是定义一个变量来存放任意类型的数据,它类似于比如像纯面向对象语言java或.net中的Object类型. Boost::An ...
- boost库学习随记五 Boost.Locale 之字符转换 gbk utf8 big5 string wstring等
Boost.Locale是一个库,它提供高质量的本地化的设施在C + +的方式.它最初是设计的一部分CppCMS - C + +的Web框架的项目,然后促成了提升. Boost.Locale提供强大的 ...
- Boost库学习笔记(4)—— Signals2
一.概述 Boost.Signals2库一个信号和槽管理系统的实现.信号表示带有多个目标的回调,在类似的系统中也成为发布者或者事件.信号被连接到一些槽上,这些槽是回调接收者(也成为事件目标或者订阅方) ...
- boost库学习④:boost::asio::buffer
asio::buffer常用的构造方法 字符数组 char d1[128]; size_t bytes_transferred = socket.receive(boost::asio::buffer ...
最新文章
- 喵哈哈村的狼人杀大战(4)
- 06day 03cdbpdb也成为 多租户环境
- iOS开发网络篇—数据缓存
- ComeFuture英伽学院——2019年 全国大学生英语竞赛【C类初赛真题解析】大小作文——详细解析
- mvc:annotation-driven/
- Symbian编程总结-图形图像篇-直接屏幕访问
- 配置DNS辅助服务器:DNS系列之四
- 基本数据类型与字符串的转换
- Netflix正在搞的混沌工程到底是什么?终于有人讲明白了
- 软件项目管理 第七章 进度计划
- Delphi利用字符串序列号对象
- 视频解析接口公众号对接教程
- 密码库LibTomCrypt学习记录——(2.13)分组密码算法的工作模式——CCM加密认证模式
- 37岁被裁员,大公司不愿要,无奈去小公司面试,HR的话扎心了
- 图 2021-01-16
- 墙裂推荐 Anaconda | 安利 Python IDE
- java jtextarea 事件_JTextArea的事件处理2
- 【PC】完美解决 office2010 错误1920 未能启动服务 “Office Software Protection Platform”(osppsvc)
- 锐捷AP下电脑突然获取不到IP地址,不能正常上网
- Docker 架构详解 - 每天5分钟玩转容器技术(7)
热门文章
- C# 转账到个人支付宝
- Oracle # 连接本地ORCL数据库
- 微信小程序卖货收费吗?企业公司商家要知道的
- delphi10进制转换成16进制
- TensorFlow保姆级别教入门,不会就把我头打爆
- 惠普1139一体打印机如何联网打印_连接您的HP无线打印机 | 无线打印中心 | 惠普中国...
- forms builder (10g)配置之SysFader:iexplorer.exe应用程序错误
- android开发--仿微信朋友圈界面
- 【剧前爆米花--爪哇岛寻宝】MySQL中索引和事务
- DEP是数据交换协议的意思