timer类

#include <boost\timer.hpp>
#include "iostream"
using namespace std; int _tmain(int argc, _TCHAR* argv[])
{
boost::timer t;
cout<<"max time span: "<<t.elapsed_max()/<<"h"<<endl; //596.523h
cout<<"min time span: "<<t.elapsed_min()<<"s"<<endl; //0.001s
cout<<"now time: "<<t.elapsed()<<"s"<<endl; //0.00s
return ;
}

timer对象在创建的时候就开始计时了,它最多只能计时596个小时左右,所以适合以月、年为单位计时需求。

progress_timer类

#include "iostream"
#include <boost\progress.hpp>
using namespace std; int _tmain(int argc, _TCHAR* argv[])
{
boost::progress_timer t;
//do something; return ;
}

progress_timer 继承自timer类,progress_timer比较牛的点是它在析构的时候会自动向标准流(默认是std:out)输出自对象创建后流逝的时间;但是也可以把时间输出到其他库标准流(比如stringstream)

int _tmain(int argc, _TCHAR* argv[])
{
stringstream ss;
{
boost::progress_timer t(ss);
//do something;
}
cout<<ss.str();
return ;
}

progress_display类

#include "iostream"
#include <Windows.h>
#include <boost\progress.hpp>
using namespace std; int _tmain(int argc, _TCHAR* argv[])
{ //声明一个progress_display的对象,基数是一个整数
boost::progress_display p();
int i=;
while(i<)
{
i++;
Sleep();
++p;
}
return ;
}

progress_display类与timer和progress_timer没有任何关系。

它接受一个long型参数expected_count,表示用于进度显示的参数;当进度达到expected_count时表示任务已经了,进度是100%。

输出结果:

0%   10   20   30   40   50   60   70   80   90   100%
|----|----|----|----|----|----|----|----|----|----|
***********************

date类

date类是date_time库中的一个类。下面是它的几种用法。

个人觉得其中的day_of_year() 函数还是挺实用的,我就经常要算今天是第几天

#include "iostream"
#include <boost\date_time\gregorian\gregorian.hpp>
using namespace std;
using namespace boost::gregorian; int _tmain(int argc, _TCHAR* argv[])
{
/*日期的初始化*/
date d;
date d2(,,);
date d3 = from_string("2014-07-30");
date d4 = from_string("2014/07/30"); /*日期的获得*/
cout<<d3.year()<<"-"<<d3.month()<<"-"<<d3.day()<<endl;
cout<<day_clock::local_day()<<endl; //local time
cout<<day_clock::universal_day()<<endl; //UTC time cout<<d3.day_of_week()<<endl;//返回星期数,0表示星期天
cout<<d3.day_of_year()<<endl;//返回该年第几天 /*日期转换成字符串*/
cout<<to_simple_string(d3)<<endl //2014-JUL-30
cout<<to_iso_string(d3)<<endl; //
cout<<to_iso_extended_string(d3)<<endl; //2014-07-30 return ;
}

c语言里有一个结构体tm可以用来处理日期,下面是date类的运算以及与tm相互转换的例子:

int _tmain(int argc, _TCHAR* argv[])
{
/*日期的初始化*/
date d(,,);
tm t=to_tm(d);//从date转换到tm
cout<<t.tm_year<<"-"<<t.tm_mon<<"-"<<t.tm_mday<<endl; //114-6-20 (tm 是从1900年开始的,month的0代表1月)
date d2=date_from_tm(t);//从tm转换到date /*日期的运算*/
date d3(,,);
cout<<d3-d<<endl;
cout<<d+days()<<endl; //2014-Jul-30
cout<<d+months()<<endl; //2015-May-20
cout<<d+years()<<endl; //2024-Jul-20
cout<<d-weeks()<<endl; //2014-Mar-02
return ;
}

c++ boost库学习一:时间和日期的更多相关文章

  1. Boost库学习之旅入门篇

    学习及使用Boost库已经有一段时间了,Boost为我的日常开发中带来了极大的方便,也使得我越来越依赖于boost库了.但boost功能太多,每次使用还是得翻看以前的 资料,所以为了以后可以更方便的使 ...

  2. Python标准库:datetime 时间和日期模块 —— 时间的获取和操作详解

    datetime 时间和日期模块 datetime 模块提供了以简单和复杂的方式操作日期和时间的类.虽然支持日期和时间算法,但实现的重点是有效的成员提取以进行输出格式化和操作.该模块还支持可感知时区的 ...

  3. boost库学习之regex

    一.背景 项目中许多地方需要对字符串进行匹配,比如根据指定的过滤字符串来过滤文件名.刚开始是排斥使用boost库的,第一,我不熟悉boost库:第二,如果引入第三方库,就会增加库的依赖,这样的后果是, ...

  4. boost库学习之开篇

    本系列文章使用boost_1.58.0版本. 一.欢迎使用boost C++库 boost致力于提供一个免费的.便携的源代码级的库. 我们重视那些与C++标准一起工作良好的库.boost库将要成为一个 ...

  5. c++ boost库学习三:实用工具

    noncopyable 大家都知道定义一个空类的时候,它实际包含了构造函数,拷贝构造函数,赋值操作符和析构函数等. 这样就很容易产生一个问题,就是当用户调用A a(“^_^") 或者A c= ...

  6. 【Boost】boost库获取格式化时间

    获取时间方式 格式一:YYYYMMDD #include<iostream> #include<string> #include<boost/date_time/greg ...

  7. C标准函数库中获取时间与日期、对时间与日期数据操作及格式化

    表示时间的三种数据类型[编辑] 日历时间(calendar time),是从一个标准时间点(epoch)到现在的时间经过的秒数,不包括插入闰秒对时间的调整.开始计时的标准时间点,各种编译器一般使用19 ...

  8. boost库学习随记六:使用同步定时器、异步定时器、bind、成员函数回调处理、多线程的同步处理示例等

    一.使用同步定时器 这个示例程序通过展示如何在一个定时器执行一个阻塞等待. //makefile #-------------------------------------------------- ...

  9. c++ boost库学习二:内存管理->智能指针

    写过C++的人都知道申请和释放内存组合new/delete,但同时很多人也会在写程序的时候忘记释放内存导致内存泄漏.如下所示: int _tmain(int argc, _TCHAR* argv[]) ...

随机推荐

  1. Android-ViewPagerIndicator框架使用——UnderlinePageIndicator

    前言:UnderlinePageIndicator这个指示,是一个很小巧的东西,简单,没有那么多复杂的效果. 一:布局定义simple_underlines: <LinearLayout xml ...

  2. 双基准快速排序(Dual-Pivot Quicksort)(转)

    课本上常见的快速排序都是选择一个枢纽元(Pivot),基于这个枢纽元从前后双向扫描分成大于枢纽元和小于枢纽元的.而从JDK 7开始,java.util.Arrays.sort()使用双基准快速排序(D ...

  3. 【BZOJ1280】Emmy卖猪pigs 最大流

    [BZOJ1280]Emmy卖猪pigs Description Emmy在一个养猪场工作.这个养猪场有M个锁着的猪圈,但Emmy并没有钥匙.顾客会到养猪场来买猪,一个接着一个.每一位顾客都会有一些猪 ...

  4. 关于VUe的生命周期小小的理解

    实例化初始化->beforeCreate()->数据监测->事件配置->实例已经创建完成(created),在这一步,实例已完成以下的配置:数据观测(data observer ...

  5. jQuery实现鼠标放到图片上,放大图片

    <script src="../../Script/jquery-1.7.2.js" type="text/javascript"></scr ...

  6. shell中${}的使用

    1. 截断功能${file#*/}:       拿掉第一条/及其左边的字符串:dir1/dir2/dir3/my.file.txt${file##*/}:    拿掉最后一条/及其左边的字符串:my ...

  7. iOS反射:把对象直接转化成NSDictionary

    在IOS的网络编程中,通常我们需要将一些实体数据保存到NSDictionary,在获得NSDictionary后即可直接使用iOS 5后的NSJSONSerialization类型的dataWithJ ...

  8. 批量索引以提高索引速度 -d --data-binary

    index create update 第1.2行分别为:信息行.数据行,在索引中增加或更换文档delete 移除文档,只包含信息行 Bulk API | Elasticsearch Referenc ...

  9. javascript基础(整理自廖雪峰)

    不要使用==比较,始终坚持使用===比较false == 0; //返回true. 这种情况, 它会自动转换数据类型再比较false === 0; //返回false. 建议用这种方式 NaN === ...

  10. [翻译] flask-SocketIO

    最近开发工作需要用到websocket去替代老办法轮询,因为我们的web系统使用flask搭建,所以使用flask-SocketIO作为我们的websocket方案,因此顺手翻译官方文档 *** Fl ...