Boost库时间日期学习

学习内容见《Boost程序库完全开发指南》第2章 时间与日期

学习三个类的使用timer、progress_timer、date。

Boost库的配置可参照:http://blog.csdn.net/segen_jaa/article/details/7407404。

开发环境:WinXP+VS2005+ boost_1_49_0。
以下所有示例程序均为控制台程序。


1、timer类
timer类是一个小型的计时器,提供毫秒级别的计时精度。

#include "stdafx.h"
#include <iostream>
#include <boost/timer.hpp>

using namespace std;
using namespace boost;

int _tmain(int argc, _TCHAR* argv[])
{
    timer t;
    cout<<"max timespan:"<<t.elapsed_max()/3600<<"h"<<endl;
    cout<<"min timespan:"<<t.elapsed_min()<<"s"<<endl;

    //输出已经流逝的时间
    cout<<"now time elapsed:"<<t.elapsed()<<"s"<<endl;

    return 0;
}

输出结果:
max timespan:596.523h
min timespan:0.001s
now time elapsed:0.015s

2、progress_timer类
progress_timer类对timer类做了优化,在析构函数中自动输出流逝时间。

#include "stdafx.h"
#include <boost/progress.hpp>

using namespace boost;

int _tmain(int argc, _TCHAR* argv[])
{
    //progress_timer析构时会自动输出流逝时间

    {
        progress_timer t;

        //do something...
        int nSum = 0;
        for (int i = 1; i <= 1000; i++)
        {
            nSum += i;
        }
    }

    {
        progress_timer t;

        //do something...
        int nSum = 0;
        for (int i = 1; i <= 1000; i++)
        {
            nSum += i;
        }
    }

    return 0;
}

3、date类
date类使用32位的整数作为内部存储,以天为基本单位。使用date日期运算更加方便。


一周前、三月前、一年前日期确定,采用date来计算。
原先算法见: http://blog.csdn.net/segen_jaa/article/details/6821064。

#include "stdafx.h"
#include <iostream>
#include <boost/date_time/gregorian/gregorian.hpp>

using namespace std;
using namespace boost::gregorian;

int _tmain(int argc, _TCHAR* argv[])
{
    date d1(2000,1,1);
    date d2(2008,8,8);

    //输出相差多少天
    cout<<(d2-d1)<<endl;

    date d3(2012,6,30);

    //一周前日期
    date d4 = d3 - days(7);
    cout<<to_iso_extended_string(d4)<<endl;

    //三个月前日期
    date d5 = d3 - months(3);
    cout<<to_iso_extended_string(d5)<<endl;

    //一年前日期
    date d6 = d3 - years(1);
    cout<<to_iso_extended_string(d6)<<endl;

    return 0;
}

输出结果如下:
3142
2012-06-23
2012-03-31
2011-06-30

你可能感兴趣的:(timer,Date,算法,优化,String,存储)