学习boost之0 开发一个日历

来源:互联网 发布:淘宝一个月能刷多少单 编辑:程序博客网 时间:2024/05/22 16:48

早有听闻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;}


输出如下



开发效率上讲还是蛮高的,十分钟搞定哈。

0 0