(一)boost库之日期、时间

一、计时器 

计时器,通常在一个项目中统计一个函数的执行时间是非常实用的。

 
  1. #include <boost/timer.hpp>
  1. void PrintUserTime()
  1. {
  1. boost::timer t; //定义一个计时类,开始计时
  1. std::cout << "可度量的最大时间:" << t.elapsed_max()/3600 << "h" << std::endl;
  1. std::cout << "可度量的最大时间:" << t.elapsed_min() << "s" << std::endl;
  1. std::cout << "使用时间为:" << t.elapsed() << std::endl;
  1. }

二、获取当前日期

  1. date d(day_clock::local_day());

三、将字符串转换成日期

  1. date fmtdt1 = from_string("2013-04-21");
  1. date fmtdt2 = date_from_iso_string("20140320");
  1. date fmtdt3 = from_us_string("1-25-2003")

四、日期转换成字符串

  1. to_iso_string
  1. to_simple_string

五、日期长度,以天为单位

  1. date_duration dur = end - beg;
  1. cout << dur.days() << endl;

六、日期区间

接收两个时间点,用于判断时间区间的交集、并集、间隔、区间平移等关于区间的操作

  1. date_period p(beg, end);

七、日期运算

提供days、months、years三个时间类,可与日期类进行混合运算

  1. months m(1);
  1. date end = d + m;

八、日期、日期与字符串转换、日期加减运算

  1. #include <boost/date_time/gregorian/gregorian.hpp>
  1. void PrintDate()
  1. {
  1. using namespace boost::gregorian;
  1. using namespace std;
  1. //获取当前时间
  1. date d(day_clock::local_day());
  1. //日期类支持IO流输出
  1. cout << d << endl;
  1.  
  1. //将日期转换成字符串 20140320
  1. cout << to_iso_string(d) << endl;
  1.  
  1. //将字符串中转换成日期
  1. date fmtdt1 = from_string("2013-04-21");
  1. date fmtdt2 = from_string("2013/04/21");
  1. cout << fmtdt1 << " " << fmtdt2 << endl;
  1.  
  1. //日期的运算,
  1. days day(1);
  1. months m(1);
  1. years y(1);
  1. date beg = d + day - y;
  1. date end = d + m;
  1. cout << (beg < end ? "Yes" : "No") << endl;
  1.  
  1. //特别地, date - date = date_duration , 同时也支持date +/- date_duration
  1. //日期长度
  1. date_duration dur = end - beg;
  1. cout << dur.days() << endl;
  1. //日期区间
  1. date_period p(beg, dur);
  1. cout << p << endl;
  1. }

九、时间、时间与字符串转换、时间加减运算

和日期大同小异,也提供时间长度:time_duration,时间区间:time_period,及时间操作类hours、minutes、seconds、milliseconds、microseconds

  1. #include <boost/date_time/posix_time/posix_time.hpp>
  1. void PrintTime()
  1. {
  1. using namespace boost::posix_time;
  1. using namespace std;
  1. using namespace boost::gregorian;
  1.  
  1. //获取本地时间
  1. ptime t1(second_clock::local_time());
  1. //获取UTC时间
  1. ptime t2(second_clock::universal_time());
  1. cout << t1 << t2 << endl;
  1.  
  1. //时间8:30
  1. time_duration dur(8,30,0);
  1. hours h(1);
  1. minutes m(1);
  1. seconds s(1);
  1. milliseconds mi(1); //毫秒
  1. microseconds mic(1); //微秒
  1. //nanoseconds na(1); //纳秒 需要系统的支持
  1. ptime t3(date(2013,4,20));
  1. ptime t4(date(2013,4,20), dur);
  1. ptime t5(date(2013,4,20), mic);
  1. cout << to_simple_string(t3) <<" " << to_simple_string(t5) << endl;
  1.  
  1. //时间的运算,与日期差不多,非常简单
  1. cout << t2 - t1 << endl;
  1. }

十、格式化时间

主要用来两个类,输入:date_input_facet, 输出:date_facet 
时间格式化类为:time_input_facet   time_facet  boost::posix_time::time_facet *timeFmt = new boost::posix_time::time_facet("%Y-%m-%d %H:%M:%S");

  1. #include <boost/date_time/gregorian/gregorian.hpp>
  1. void FormatDateTime()
  1. {
  1. using namespace boost::gregorian;
  1. using namespace std;
  1.  
  1. //输入
  1. date d;
  1. std::string teststring = "140320";
  1. boost::gregorian::date_input_facet *fmt = new boost::gregorian::date_input_facet("%y%m%d");
  1. std::stringstream ss1(teststring);
  1. ss1.imbue(locale(ss1.getloc(), fmt));
  1. ss1 >> d;
  1. cout << d << endl;
  1. //输出
  1. boost::gregorian::date d2(2009, 1, 7);
  1. boost::gregorian::date_facet *fmt2 = new boost::gregorian::date_facet("%A, %d %B %Y");
  1. std::cout.imbue(std::locale(std::cout.getloc(), fmt2));
  1. std::cout << d2 << std::endl;
  1.  
  1. //定制
  1. std::locale::global(std::locale("German"));
  1. std::string months[12] = { "Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember" };
  1. std::string weekdays[7] = { "Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag" };
  1. boost::gregorian::date d3(2009, 1, 7);
  1. boost::gregorian::date_facet *df = new boost::gregorian::date_facet("%A, %d. %B %Y");
  1. df->long_month_names(std::vector<std::string>(months, months + 12));
  1. df->long_weekday_names(std::vector<std::string>(weekdays, weekdays + 7));
  1. std::cout.imbue(std::locale(std::cout.getloc(), df));
  1. std::cout << d3 << std::endl;
  1. }

(一)boost库之日期、时间的更多相关文章

  1. Python学习笔记9:标准库之日期时间(time包,datetime包)

    一 time包 sleep([float time]) 延迟一段以浮点数表示的秒数 time包基于C语言的库函数(library functions). Python的解释器一般是用C编写的,Pyth ...

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

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

  3. Java 8——日期时间工具库(java.time)

    一.前言 在介绍Java SE 8中新的日期时间库前,先了解下Java 8之前的日期时间工具的诟病. 在Java SE 8前,日期时间工具库在java.util包中,包括: java.util.Dat ...

  4. C语言日期时间标准库

    用思维导图整理: 代码: #include <stdio.h> #include <time.h> #include <string.h> int main() { ...

  5. js非常强大的日历控件fullcalendar.js, 日期时间库: moment.js

    日历控件: https://fullcalendar.io/docs/ https://fullcalendar.io/docs/event_data/events_function/ https:/ ...

  6. JDK1.8日期时间库学习

    这周在阅读<阿里巴巴Java开发手册>时,在并发处理一节的日期处理中,其强调SimpleDateFormat 是线程不安全的类,一般不要定义为 static 变量,如果 定义为 stati ...

  7. Python中处理日期时间库的使用方法(转载)

    <本文来自公众号“大邓带你玩python”,转载> 用百分之20时间,学会解决百分之80的问题. 常用的库有time.datetime.其中datetime库是对time库的封装,所以使用 ...

  8. 程序员常用6 个 Python 的日期时间库

    内建的 datetime 模块 在跳转到其他库之前,让我们回顾一下如何使用 datetime 模块将日期字符串转换为 Python datetime 对象. 假设我们从 API 接受到一个日期字符串, ...

  9. Java8新特性探索之新日期时间库

    一.为什么引入新的日期时间库 Java对日期,日历及时间的处理一直以来都饱受诟病,尤其是它决定将java.util.Date定义为可修改的以及将SimpleDateFormat实现成非线程安全的. 关 ...

随机推荐

  1. WebSocket 简介

    在HTML5规范中,我最喜欢的Web技术就是正迅速变得流行的WebSocket API.WebSocket提供了一个受欢迎的技术,以替代我们过去几年一直在用的Ajax技术.这个新的API提供了一个方法 ...

  2. javascript全局对象

    一.Array 二.Boolean 三.Date 四.Error 五.EvalError 六.Function 七.JSON 八.Math 九.Number 十.Object 十一.RangeErro ...

  3. 2014元旦第1周三新的尝试&爬山丢失望远镜

    2014元旦在早起中开始,起来后看了<逃出你的肖申克>系列文章,没有精度只是选择了里面的关键语句和方法论,没有多少意外的收获.然后看了些java系列文章,关于jvm参数配置.运行监控及性能 ...

  4. UESTC_冰雪奇缘 CDOJ 843

    艾莎女王又开始用冰雪魔法盖宫殿了. 她决定先造一堵墙,于是释放魔法让形为直角梯形的冰砖从天而降,定入冻土之中. 现在你将回答女王的询问:某段冻土上冰砖的面积. 注:多块冰砖之间会互相重叠,重叠部分要多 ...

  5. OC基础17:归档

    "OC基础"这个分类的文章是我在自学Stephen G.Kochan的<Objective-C程序设计第6版>过程中的笔记. 1.归档即是用某种格式把一个或多个对象保存 ...

  6. Android学习总结——Service组件

    从Service的启动方式上,可以将Service分为Started Service和Bound Service.在使用Service时,要想系统能够找到此自定义Service,无论哪种类型,都需要在 ...

  7. log4net 使用与配置 每天一份log文件

    1.下载 或 在nuget安装 log4net 2. web.config (app.config) <configuration> <configSections> < ...

  8. .net网站开发(设计):1.什么是MVC模式

    好吧我知道,应该很少人一开始学网站开发就从MVC开始,但如果你已经理解了三层架构之类的,那直接尝试强大的微软MVC网站开发模式也是挺不错的. 但其实我们学校有个实验室,那些干进去的就算是大一的学生,也 ...

  9. linux下php扩展curl的安装

    方法一 安装cURL wget http://curl.haxx.se/download/curl-7.17.1.tar.gz tar -zxf curl-7.17.1.tar.gz ./config ...

  10. linux下 /etc/profile、~/.bash_profile ~/.profile的执行过程

    关于登录linux时,/etc/profile.~/.bash_profile等几个文件的执行过程. 在登录Linux时要执行文件的过程如下: 在刚登录Linux时,首先启动 /etc/profile ...