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. python多线程爬虫:亚马逊价格

    import re import requests import threading import time from time import ctime,sleep from queue impor ...

  2. JDK之ThreadLocal分析

    ThreadLocal是在是Thread的一个局部变量,今天我来分析了一下这个类 先看ThreadLocal的set方法 public void set(T value) { Thread t = T ...

  3. L - Sum It Up(DFS)

    L - Sum It Up Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Descr ...

  4. 宇视4G设备采用GB/T28181协议成功接入EasyGBS国标流媒体平台的设置流程

    经过了多天的调试对接,终于将宇视的布控球顺利接入到了EasyGBS的国标平台,特地写一下对接过程中遇到的问题,希望能帮助大家避开一些麻烦: 第一步:电脑连接无线网络IPCWIFI,密码12345678 ...

  5. linux解压war包

    可以用unzip命令 unzip project.war -d project 这样就在当前目录下解压project.war到project目录里面,参数-d的意思是创建project目录 附:unz ...

  6. C# new和override区别(转)

    override 1. override是派生类用来重写基类中方法的: 2. override不能重写非虚方法和静态方法: 3. override只能重写用virtual.abstract.overr ...

  7. 一篇搞定spring Jpa操作数据库

    开始之前你必须在项目配置好数据库,本文使用的spring boot,相比spring,spring boot省去了很多各种对以来组件复杂的配置,直接在pom配置组件,完后会自动帮我们导入组件 < ...

  8. diff工具

    Beyond Compare 4  可以diff文件夹.单个文件.

  9. 018-Spring Boot Starter开发

    自建spring-boot-starter artifactId命名 Spring 官方 Starter通常命名为spring-boot-starter-{name}如 spring-boot-sta ...

  10. eval in Shell

    语法:eval cmdLine eval会对后面的cmdLine进行两遍扫描,如果第一遍扫描后,cmdLine是个普通命令,则执行此命令: 如果cmdLine中含有变量的间接引用,则保证间接引用的语义 ...