結合Boost官網
該庫的發明是根據教皇 Gregory XIII 在1582年頒發的格里曆。這個曆法也是當前使用最廣泛的。
庫名字就是這麼來的:boost::gregorian::...
獲取當前時間:
boost::gregorian::date d = boost::gregorian::day_clock::universal_day();//universal_time() 方法返回 UTC 時間
boost::gregorian::date d = boost::gregorian::day_clock::local_day();//local_day() 方法返回本地時間
兩天日子之差:
利用operator - 得到。
定義時間區間:
boost::gregorian::date d1(2018,11,1);
boost::gregorian::date d2(2018,11,22);
boost::gregorian::date_period(d1,d2);//區間是1-21(不包括22號)
得到當前時刻:
boost::posix_time::ptime pt = boost::posix_time::second_clock::local_time();
cout << pt.time_of_day().hours() << endl; //時
cout << pt.time_of_day().minutes() << endl; //分
cout << pt.time_of_day().seconds() << endl; //秒
練習題:
1、創建一個程序,打印下一個 Christmas Eve, Christmas Day 及其後一天是星期幾到標準輸出流。
#include <boost\date_time\gregorian\gregorian.hpp>
#include <boost\date_time\posix_time\posix_time.hpp>
#include <iostream>
using namespace std;
void main()
{
boost::gregorian::date d1 = boost::gregorian::day_clock::local_day();
boost::gregorian::greg_month month(12);
boost::gregorian::greg_day day(25);
boost::gregorian::greg_year year(d.year());
boost::gregorian::date d2(year, month, day);//今年的聖誕節
boost::gregorian::date_duration dd = d2 - d1;
if (dd.days() <= 0) //如過超過今年的聖誕節,下一次就變成明年聖誕節
{
boost::gregorian::year_iterator year_it(d2);
d2 = *++year_it;
}
cout << "Next Christmas Day >> " << d2 << endl;
boost::gregorian::day_iterator day_it(d2);
d2 = *++day_it; //聖誕節第二天是星期幾
cout << "Next Christmas Day Next Day is >> " << d2.day_of_week() << endl;
}
2、以天數計算你的年齡。 該程序應該自動根據當前日期來計算。
#include <boost\date_time\gregorian\gregorian.hpp>
#include <boost\date_time\posix_time\posix_time.hpp>
#include <iostream>
using namespace std;
void main()
{
boost::gregorian::date d1 = boost::gregorian::day_clock::local_day();
boost::gregorian::date birth_day(1982, 9, 20); //我歌的生日,嘻嘻
cout << "day" << d1 - birth_day << endl;
cout << "year" << (d1 - birth_day).days() / 365 << endl;
}