c++ boost库学习一:时间和日期
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库学习一:时间和日期的更多相关文章
- Boost库学习之旅入门篇
学习及使用Boost库已经有一段时间了,Boost为我的日常开发中带来了极大的方便,也使得我越来越依赖于boost库了.但boost功能太多,每次使用还是得翻看以前的 资料,所以为了以后可以更方便的使 ...
- Python标准库:datetime 时间和日期模块 —— 时间的获取和操作详解
datetime 时间和日期模块 datetime 模块提供了以简单和复杂的方式操作日期和时间的类.虽然支持日期和时间算法,但实现的重点是有效的成员提取以进行输出格式化和操作.该模块还支持可感知时区的 ...
- boost库学习之regex
一.背景 项目中许多地方需要对字符串进行匹配,比如根据指定的过滤字符串来过滤文件名.刚开始是排斥使用boost库的,第一,我不熟悉boost库:第二,如果引入第三方库,就会增加库的依赖,这样的后果是, ...
- boost库学习之开篇
本系列文章使用boost_1.58.0版本. 一.欢迎使用boost C++库 boost致力于提供一个免费的.便携的源代码级的库. 我们重视那些与C++标准一起工作良好的库.boost库将要成为一个 ...
- c++ boost库学习三:实用工具
noncopyable 大家都知道定义一个空类的时候,它实际包含了构造函数,拷贝构造函数,赋值操作符和析构函数等. 这样就很容易产生一个问题,就是当用户调用A a(“^_^") 或者A c= ...
- 【Boost】boost库获取格式化时间
获取时间方式 格式一:YYYYMMDD #include<iostream> #include<string> #include<boost/date_time/greg ...
- C标准函数库中获取时间与日期、对时间与日期数据操作及格式化
表示时间的三种数据类型[编辑] 日历时间(calendar time),是从一个标准时间点(epoch)到现在的时间经过的秒数,不包括插入闰秒对时间的调整.开始计时的标准时间点,各种编译器一般使用19 ...
- boost库学习随记六:使用同步定时器、异步定时器、bind、成员函数回调处理、多线程的同步处理示例等
一.使用同步定时器 这个示例程序通过展示如何在一个定时器执行一个阻塞等待. //makefile #-------------------------------------------------- ...
- c++ boost库学习二:内存管理->智能指针
写过C++的人都知道申请和释放内存组合new/delete,但同时很多人也会在写程序的时候忘记释放内存导致内存泄漏.如下所示: int _tmain(int argc, _TCHAR* argv[]) ...
随机推荐
- Django项目笔记:sessions处理以及复杂对象序列化
前言:一点题外话 我发现,不更新博客的时候,不是非常忙,就是效率非常低.最近没怎么更新博客,原因是第二种= =.惭愧惭愧. 今天效率出奇的高,一天时间把PassNote后端的接口全部写完了,Djang ...
- 如何导入和导出应用数据通过电子邮件应用程序在你的IOS
本文转载至 http://blog.csdn.net/zaitianaoxiang/article/details/6657887 http://yueding920.blog.163.com/bl ...
- tf.name_scope()和tf.variable_scope()
https://blog.csdn.net/gqixf/article/details/80191918 https://blog.csdn.net/uestc_c2_403/article/deta ...
- poj1837
Balance Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 12995 Accepted: 8142 Descript ...
- 《从零开始学Swift》学习笔记(Day4)——用Playground工具编写Swift
Swift 2.0学习笔记(Day4)——用Playground工具编写Swift 原创文章,欢迎转载.转载请注明:关东升的博客 用Playground编写Swift代码目的是为了学习.测试算法.验证 ...
- 单片机c语言教程:C51循环语句
单片机c语言教程第十三课 C51循环语句 循环语句是几乎每个程序都会用到的,它的作用就是用来实现需要反复进行多次的操 作.如一个 12M 的 51 芯片应用电路中要求实现 1 毫秒的延时,那么就要执行 ...
- Django基础流程
软件环境: Pycharm 2018.1 Python 3.6 Django 2.0.3 1.新建项目 直接使用Pycharm的菜单来创建项目,命名为mysite. mysite mysite __i ...
- MVC4学习笔记之--身份认证过滤器
过滤器作为MVC模式中面向切面编程应用很广泛,例如身份验证,日志,异常,行为截取等.博客园里面的大神对应过滤器的介绍以及很多,MVC4中不同的过滤器也介绍得很清楚.FlyDragon 辉太 禁止吸烟 ...
- java javassis crack class
java javassis crack class java 反编译 android 反编译 1. jad http://varaneckas.com/jad/jad158e.linux.inte ...
- <2013 12 28> AOI PCB设计
主要设计指标: “3.多块拼板最大尺寸:60*50(CM)4. 检测速度:(230-250)片/小时 5.检测通过率:98%6.最窄线宽:设两种精度 A.最窄线宽:0.2mm, 识别精度 0.1mm ...