boost 时间与日期处理
来源:互联网 发布:身边低调的有钱人知乎 编辑:程序博客网 时间:2024/05/01 22:13
【Boost】time_duration, time_period, time_iterator
time_duration的例子
time_iterator的例子
折中的办法是重新显示 pd.restart(size); pd+= pNum;date日期结构,时间点——date是date_time库的核心类 boost::gregoriandate_durationdays、months、years 时间段——表示一段时间,可以把它看成一个intdate_period标量,左开右闭,时间区间——可以认为是一个有起点的date_duration。能做交集、并集date_iterator迭代器,以某个单位增减——天、周、月、年四种迭代器,以某种增量移动。time_duration时间段 同date_duration——hours、minutes、seconds、millisec、boost::posix_timeptime时间点 date+time_duration——分date()和time_of_day()操作。time_period时间区间 同date_period————time_iterator迭代器,以某个单位增减——可直接与ptime比较date_facet流格式化日期——%Y年%m月%d日time_facet流格式化时间——%Y年%m月%d日 %H点%M分%S%F秒运行结果:
- Max 2.14748e+006
- Min 0.001
- elapsed: 0.001
- elapsed: 0.1
- ---------------------------
- 0.30 s
- ---------------------------
- 0% 10 20 30 40 50 60 70 80 90 100%
- |----|----|----|----|----|----|----|----|----|----|
- ***************************************************
- ---------------------------
- ----------------- date ------------------
- 2013-Apr-17
- 2013-Apr-17
- -infinity
- +infinity
- ---------------------------
- 107
- 16
- ---------------------------
- 2013-Apr-17
- 20130417
- 2013-04-17
- 2013-Apr-17
- ---------------------------
- -------------- days(date_duration) --------------
- -------------- Calc --------------
- 3142
- -------------- date_period --------------
- [2013-Apr-17/2013-Apr-30]
- -------------- date_iterator --------------
- -------------- func --------------
- Yes
- -------------- time_duration --------------
- 01:08:58.999000
- 01:10:10.300000
- 011010.300000
- -------------- ptime --------------
- 2013-Apr-17 01:00:00
- 2013-Apr-17 16:25:00
- 2013-Apr-17 17:19:21
- 2013-Apr-17 09:19:21.870604
- 2013-04-17T01:30:00
- -------------- time_period --------------
- -------------- time_iterator --------------
- 2013-Apr-17 01:30:00
- 2013-Apr-17 01:40:00
- 2013-Apr-17 01:50:00
- 2013-Apr-17 02:00:00
- 2013-Apr-17 02:10:00
- 2013-Apr-17 02:20:00
- -------------- formate --------------
- 2013 年04 月17 日
- 2013 年04 月17 日 01点30分00秒
本篇紧接着boost上篇叙述Boost::DateTime的时间处理。在C++中,常见的时间有time_t, FILETIME和tm,而boost中用ptime。
构造ptime
1.ptime的构造函数有四种:
1: using namespace boost::posix_time;
2: using namespace boost::gregorian;
3: ptime pt(date(2013,Jan,24),time_duration(1,2,3)); //由date和time_duration构造
4: ptime pt1(date(2013,Jan,24),hours()+nanosec(5));//改变形式的time_duration也能使用
5: ptime pt2(p1);//拷贝构造函数
6: ptime pt3(neg_infin);//特殊值构造
7: ptime p;//默认构造函数,这里p等于not_a_date_time
2.用string构造ptime:
1: std::string ts1("2013-01-30 23:32:22.000");//固定格式,小数点后支持6位
2: ptime pt1(time_from_string(ts1));
3: std::string ts2("20130130T233222");//没有分隔符的date和time
4: ptime pt2(from_iso_string(ts2));
5:
3.通过时钟构造ptime:
1: ptime ct1(second_clock::local_time());
2: ptime ct2(second_clock::universal_time());
3: ptime ct3(microsec_clock::local_time());
4: ptime ct4(microsec_clock::universal_time());
5:
4.time_t和FILETIME构造ptime:
1: ptime t = from_time_t(tt); // 其中tt为time_t
2: ptime t1 = from_ftime<ptime>(ft); //其中ft为FILETIME
ptime访问日期时间
1: using namespace boost::posix_time;
2: using namespace boost::gregorian;
3: ptime now(second_clock::local_time());
4: std::cout << "today is: " << now.date() << std::endl;
5: std::cout << "time is: " << now.time_of_day() << std::endl;
6:
ptime转换为string
1: std::string now_str(to_simple_string(now));
2: std::string now_iso_str(to_iso_string(now));
3: std::string now_iso_ext_str(to_iso_extended_string(now));
4: std::cout << now_str << std::endl;
5: std::cout << now_iso_str << std::endl;
6: std::cout << now_iso_ext_str << std::endl;
ptime与tm,time_t,FILETIME互转
1.tm
1: using namespace boost::posix_time;
2: using namespace boost::gregorian;
3: tm pt_tm;
4: pt_tm.tm_year = 113;
5: pt_tm.tm_mon = 11;
6: pt_tm.tm_mday = 25;
7: pt_tm.tm_hour = 2;
8: pt_tm.tm_min = 23;
9: pt_tm.tm_sec = 40;
10:
11: ptime pt = data_from_tm(pt_tm);
12: std::cout << pt << std::endl;
13:
14: pt = pt + hours(2);
15: tm pt_tm1 = to_tm(pt);
2. time_t
1: using namespace boost::posix_time;
2: using namespace boost::gregorian;
3:
4: time_t now = time(NULL);
5: std::cout << "time_t : " << now << std::endl;
6: ptime now_pt = from_time_t(now);
7: std::cout << "ptime from time_t : " << now_pt.time_of_day() << std::endl;
8: tm* now_tm = gmtime(&now);
9: std::cout << "tm struct: hour : " << now_tm->tm_hour << std::endl;
10:
3.FILETIME
1: FILETIME ft;
2: ft.dwHighDateTime = 29715317;
3: ft.dwLowDateTime = 3865122988UL
4: ptime pt = from_ftime<ptime>(ft);
5: // pt ===> 2005-Jun-07 15:30:57.03958200
6:
time_duration和time_period
1: using namespace boost::posix_time;
2: using namespace boost::gregorian;
3:
4: time_duration td(100,200,3,9);
5: std::cout << td << std::endl;
6: date d(2013,Feb,5);
7: ptime pt(d,minutes(10));
8: ptime pt1(d,hours(10));
9: time_period tp(pt,pt1);
10: std::cout << tp << std::endl;
11:
对于这两者的区别,一个是时间间隔,一个是时间起止的一个窗口。time_duration用于ptime的时间偏移计算为主。而time_period可以计算一个ptime时间点是否在这个时间区间内(参考contains函数)。time_period在创建之后可以扩展,可以平移,函数分别为expand和shift。请大家自己细究。
[Boost]boost的时间和日期处理-(2)时间的操作本篇紧接着boost上篇叙述Boost::DateTime的时间处理。在C++中,常见的时间有time_t, FILETIME和tm,而boost中用ptime。
构造ptime
1.ptime的构造函数有四种:
1: using namespace boost::posix_time;
2: using namespace boost::gregorian;
3: ptime pt(date(2013,Jan,24),time_duration(1,2,3)); //由date和time_duration构造
4: ptime pt1(date(2013,Jan,24),hours()+nanosec(5));//改变形式的time_duration也能使用
5: ptime pt2(p1);//拷贝构造函数
6: ptime pt3(neg_infin);//特殊值构造
7: ptime p;//默认构造函数,这里p等于not_a_date_time
2.用string构造ptime:
1: std::string ts1("2013-01-30 23:32:22.000");//固定格式,小数点后支持6位
2: ptime pt1(time_from_string(ts1));
3: std::string ts2("20130130T233222");//没有分隔符的date和time
4: ptime pt2(from_iso_string(ts2));
5:
3.通过时钟构造ptime:
1: ptime ct1(second_clock::local_time());
2: ptime ct2(second_clock::universal_time());
3: ptime ct3(microsec_clock::local_time());
4: ptime ct4(microsec_clock::universal_time());
5:
4.time_t和FILETIME构造ptime:
1: ptime t = from_time_t(tt); // 其中tt为time_t
2: ptime t1 = from_ftime<ptime>(ft); //其中ft为FILETIME
ptime访问日期时间
1: using namespace boost::posix_time;
2: using namespace boost::gregorian;
3: ptime now(second_clock::local_time());
4: std::cout << "today is: " << now.date() << std::endl;
5: std::cout << "time is: " << now.time_of_day() << std::endl;
6:
ptime转换为string
1: std::string now_str(to_simple_string(now));
2: std::string now_iso_str(to_iso_string(now));
3: std::string now_iso_ext_str(to_iso_extended_string(now));
4: std::cout << now_str << std::endl;
5: std::cout << now_iso_str << std::endl;
6: std::cout << now_iso_ext_str << std::endl;
ptime与tm,time_t,FILETIME互转
1.tm
1: using namespace boost::posix_time;
2: using namespace boost::gregorian;
3: tm pt_tm;
4: pt_tm.tm_year = 113;
5: pt_tm.tm_mon = 11;
6: pt_tm.tm_mday = 25;
7: pt_tm.tm_hour = 2;
8: pt_tm.tm_min = 23;
9: pt_tm.tm_sec = 40;
10:
11: ptime pt = data_from_tm(pt_tm);
12: std::cout << pt << std::endl;
13:
14: pt = pt + hours(2);
15: tm pt_tm1 = to_tm(pt);
2. time_t
1: using namespace boost::posix_time;
2: using namespace boost::gregorian;
3:
4: time_t now = time(NULL);
5: std::cout << "time_t : " << now << std::endl;
6: ptime now_pt = from_time_t(now);
7: std::cout << "ptime from time_t : " << now_pt.time_of_day() << std::endl;
8: tm* now_tm = gmtime(&now);
9: std::cout << "tm struct: hour : " << now_tm->tm_hour << std::endl;
10:
3.FILETIME
1: FILETIME ft;
2: ft.dwHighDateTime = 29715317;
3: ft.dwLowDateTime = 3865122988UL
4: ptime pt = from_ftime<ptime>(ft);
5: // pt ===> 2005-Jun-07 15:30:57.03958200
6:
time_duration和time_period
1: using namespace boost::posix_time;
2: using namespace boost::gregorian;
3:
4: time_duration td(100,200,3,9);
5: std::cout << td << std::endl;
6: date d(2013,Feb,5);
7: ptime pt(d,minutes(10));
8: ptime pt1(d,hours(10));
9: time_period tp(pt,pt1);
10: std::cout << tp << std::endl;
11:
对于这两者的区别,一个是时间间隔,一个是时间起止的一个窗口。time_duration用于ptime的时间偏移计算为主。而time_period可以计算一个ptime时间点是否在这个时间区间内(参考contains函数)。time_period在创建之后可以扩展,可以平移,函数分别为expand和shift。请大家自己细究。
- boost 时间与日期处理
- boost 时间与日期处理
- boost 时间与日期处理
- boost 时间与日期处理
- boost 时间与日期处理
- Boost之时间与日期处理
- boost 时间与日期处理测试
- boost 时间与日期
- Boost之日期时间处理(date_time库)
- boost处理日期和时间的总结
- boost的时间和日期处理1
- 时间与日期处理
- 日期与时间处理
- 时间与日期处理
- 时间与日期处理
- 时间与日期处理
- 时间与日期处理
- 时间与日期处理
- 判断某个窗口是否是活动窗口(当前正在使用、操作的窗口)
- iOS开发:整理UITextField属性的基本用法(部分)
- tcp socket文件句柄泄漏
- 交换瓶子
- 全志R16调通USB接口的WIFI:RTL8188CUv1.0版本.txt
- boost 时间与日期处理
- 三种编程命名规则(匈牙利法,小驼峰法,大驼峰法)
- java操作数据 “ 读写 ” excle文件
- Excel Sheet Column Title
- 正则表达式截取字符串
- itunes找不到设备
- js定时器的时间最小值-setTimeout、setInterval
- cocos2d-x 提升篇 (18) 碰到的一些问题
- Unit5 文档