您的位置:首页 > 其它

学习boost之0 开发一个日历

2014-06-20 21:11 155 查看
早有听闻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++ )
      cout << "\t";
    
    int nday = gregorian_calendar::
                 end_of_month_day( dt.year(), dt.month() ); // 获取当前月的天数
    for ( int j = 1; j <= nday; j++,i++ )
    {
        if ( i != 0 && i % 7 == 0 ) cout << endl;
        cout << j << "\t";
    }
    cout << endl;
}


输出如下



开发效率上讲还是蛮高的,十分钟搞定哈。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: