概述
使用date_time库需要在编译时加上"-lboost_date_time",而且需要包含以下头文件:
处理日期的组件:#include <boost/date_time/gregorian/gregorian.hpp>
处理时间的组件:#include <boost/date_time/posix_time/posix_time.hpp>
date类
date是date_time库处理日期的核心类,使用一个32位的整数作为内部存储,以天为单位表示时间点概念。date也全面支持比较操作和输入输入出,我们可以完全把它当成一个像int、string那样的基本类型来使用。
#include <iostream>
#include <boost/date_time/gregorian/gregorian.hpp>
using namespace std;
using namespace boost::gregorian;
int main()
{
date d1(2001, 1, 1);
date d2(2002, Feb, 2);
date d3 = from_string("2003-3-3");
date d4 = from_string("2004/4/4");
date d5 = from_undelimited_string("20050505");
cout << "本地日期:" << day_clock::local_day() << endl
<< "UTC日期:" << day_clock::universal_day() << endl << endl;
cout << "负无限日期:" << neg_infin << endl
<< "正无限日期:" << pos_infin << endl
<< "无效日期:" << not_a_date_time << endl
<< "最大可能日期:" << max_date_time << endl
<< "最小可能日期:" << min_date_time << endl << endl;
cout << "对于2001-01-01:" << endl
<< "年:" << d1.year() << endl
<< "月:" << d1.month() << endl
<< "日:" << d1.day() << endl << endl;
cout << "对于2002-02-02:" << endl
<< "星期数:(0表示星期天)" << d2.day_of_week() << endl
<< "当年的第几天:" << d2.day_of_year() << endl
<< "当年的第几周:" << d2.week_number() << endl
<< "当月的最后一天:" << d2.end_of_month() << endl << endl;
cout << "对于2003-03-03:" << endl
<< "直接打印日期:" << d3 << endl
<< "使用to_simple_string打印日期:" << to_simple_string(d3) << endl
<< "使用to_iso_string打印日期:" << to_iso_string(d3) << endl
<< "使用to_iso_extended_string打印日期:" << to_iso_extended_string(d3) << endl << endl;
return 0;
}
输出:
本地日期:2016-Jun-24
UTC日期:2016-Jun-24
负无限日期:1
正无限日期:2
无效日期:0
最大可能日期:4
最小可能日期:3
对于2001-01-01:
年:2001
月:Jan
日:1
对于2002-02-02:
星期数:(0表示星期天)Sat
当年的第几天:33
当年的第几周
UTC日期:2016-Jun-24
负无限日期:1
正无限日期:2
无效日期:0
最大可能日期:4
最小可能日期:3
对于2001-01-01:
年:2001
月:Jan
日:1
对于2002-02-02:
星期数:(0表示星期天)Sat
当年的第几天:33
当年的第几周