ptime类介绍

1. 概述
包含的头文件: #include <boost/date_time/posix_time/posix_time.hpp>
通常的命名空间: using namespace boost::posix_time;
2. 构造函数
跟date的构造函数一样, 都基本构造函数, 字符串构造, clock构造.
ptime还可以通过转换函数构造.

[cpp] view plain copy print ?
  1. void test_ptime_construct()  
  2. {  
  3.     using namespace boost::gregorian;  
  4.     using namespace boost::posix_time;  
  5.   
  6.     // 1. 常规的构造函数有如下几种:   
  7.     ptime p0;  
  8.     // 最常用的构造方法   
  9.     ptime p1(date(2012, 11, 30), time_duration(1, 2, 3));   // 2012-Nov-30 01:02:03  
  10.     ptime p2(p1);                                           // 复制构造  
  11.     ptime ps1(neg_infin);  
  12.     ptime ps2(pos_infin);  
  13.     ptime ps3(not_a_date_time);  
  14.     ptime ps4(max_date_time);   // 9999-Dec-31  
  15.     ptime ps5(min_date_time);   // 1400-Jan-01  
  16.   
  17.     // 2. 通过字符串构造   
  18.     ptime pstr1(time_from_string("2012-11-30 23:59:59.000"));  
  19.     ptime pstr2(from_iso_string("20121130T200001"));  
  20.   
  21.     // 3. 通过clock构造   
  22.     ptime pc1(second_clock::local_time());  
  23.     ptime pc2(second_clock::universal_time());  
  24.     ptime pc3(microsec_clock::local_time());  
  25.     ptime pc4(microsec_clock::universal_time());  
  26.   
  27.     // 4. 通过转换函数from_time_t和ptime_from_tm,   
  28.     // 注意: 这样通过from_time_t转换成ptime后, 好像是格林威治时间  
  29.     time_t t1 = time(NULL);  
  30.     ptime pc5 = from_time_t(t1);  
  31.     std::cout << pc5 << std::endl;  
  32.   
  33.     tm* t2 = localtime(&t1);  
  34.     ptime pc6 = ptime_from_tm(*t2);  
  35.     std::cout << pc6 << std::endl;  
  36. }  

3. 常用函数
可以换取日期, 时间, 秒的小数部分

[cpp] view plain copy print ?
  1. void test_ptime_accessor()  
  2. {  
  3.     using namespace boost::posix_time;  
  4.     using namespace boost::gregorian;  
  5.   
  6.     // 获取日期部分   
  7.     ptime pt(second_clock::local_time());  
  8.     date d1 = pt.date();  
  9.   
  10.     // 获取时间部分   
  11.     time_duration td = pt.time_of_day();  
  12.   
  13.     // 获取秒的小数部分   
  14.     __int64 l = td.fractional_seconds();  
  15.     std::cout << l << std::endl;  
  16. }  

4. 转换成字符串

[cpp] view plain copy print ?
  1. void test_ptime2string()  
  2. {  
  3.     using namespace boost::posix_time;  
  4.   
  5.     time_duration td1(1, 2, 3, 4);  
  6.     std::cout << to_simple_string(td1) << std::endl;  
  7.     std::cout << to_iso_string(td1) << std::endl;  
  8. }  

 

备注:在用字符串构造ptime时应该特别注意字符串的前后不能有多余的空格,例如ptime pstr1(time_from_string("2012-11-30 23:59:59"));可以正常构造ptime.

但是ptime pstr1(time_from_string("2012-11-30 23:59:59 "));最后多一个空格的情况下将导致构造异常,程序异常终止,切记。

 

你可能感兴趣的:(boost,ptime)