早有听闻boost很强大,最近开始学点皮毛。先从简单的开始学,就date_time库吧。
大致看了下date_time库的实现,不难,日期的核心算法是蔡勒公式,时间是调用底层的localtime。boost的强大之处就是普通人用几个函数就能搞定的东西,他给你封装几十个类。比如日期除了整数难道有其他类型吗?吐槽归吐槽,用起来还是很方便的。
用他提供的类写了一个控制台日历。
#include <boost/date_time.hpp>
#include <iostream>
void calendar()
{
// 包含相关名字空间
using namespace boost::posix_time;
using namespace boost::gregorian;
using std::cout;
using std::endl;
ptime pt( second_clock::local_time() ); // 获取当前时间
cout << "日\t一\t二\t三\t四\t五\t六" << endl;
date dt = pt.date(); // 获取当前日期
dt -= days( dt.day() - 1 ); // 切换到本月一号
int i = dt.day_of_week(); // 获取一号是星期几
// 以下是格式化输出
for ( int k = 0; k < i; k++ )