(一)boost库之日期、时间
(一)boost库之日期、时间
计时器,通常在一个项目中统计一个函数的执行时间是非常实用的。
#include <boost/timer.hpp>
void PrintUserTime()
{
boost::timer t; //定义一个计时类,开始计时
std::cout << "可度量的最大时间:" << t.elapsed_max()/3600 << "h" << std::endl;
std::cout << "可度量的最大时间:" << t.elapsed_min() << "s" << std::endl;
std::cout << "使用时间为:" << t.elapsed() << std::endl;
}
二、获取当前日期
date d(day_clock::local_day());
三、将字符串转换成日期
date fmtdt1 = from_string("2013-04-21");
date fmtdt2 = date_from_iso_string("20140320");
date fmtdt3 = from_us_string("1-25-2003")
四、日期转换成字符串
to_iso_string
to_simple_string
五、日期长度,以天为单位
date_duration dur = end - beg;
cout << dur.days() << endl;
六、日期区间
接收两个时间点,用于判断时间区间的交集、并集、间隔、区间平移等关于区间的操作
date_period p(beg, end);
七、日期运算
提供days、months、years三个时间类,可与日期类进行混合运算
months m(1);
date end = d + m;
八、日期、日期与字符串转换、日期加减运算
#include <boost/date_time/gregorian/gregorian.hpp>
void PrintDate()
{
using namespace boost::gregorian;
using namespace std;
//获取当前时间
date d(day_clock::local_day());
//日期类支持IO流输出
cout << d << endl;
//将日期转换成字符串 20140320
cout << to_iso_string(d) << endl;
//将字符串中转换成日期
date fmtdt1 = from_string("2013-04-21");
date fmtdt2 = from_string("2013/04/21");
cout << fmtdt1 << " " << fmtdt2 << endl;
//日期的运算,
days day(1);
months m(1);
years y(1);
date beg = d + day - y;
date end = d + m;
cout << (beg < end ? "Yes" : "No") << endl;
//特别地, date - date = date_duration , 同时也支持date +/- date_duration
//日期长度
date_duration dur = end - beg;
cout << dur.days() << endl;
//日期区间
date_period p(beg, dur);
cout << p << endl;
}
九、时间、时间与字符串转换、时间加减运算
和日期大同小异,也提供时间长度:time_duration,时间区间:time_period,及时间操作类hours、minutes、seconds、milliseconds、microseconds
#include <boost/date_time/posix_time/posix_time.hpp>
void PrintTime()
{
using namespace boost::posix_time;
using namespace std;
using namespace boost::gregorian;
//获取本地时间
ptime t1(second_clock::local_time());
//获取UTC时间
ptime t2(second_clock::universal_time());
cout << t1 << t2 << endl;
//时间8:30
time_duration dur(8,30,0);
hours h(1);
minutes m(1);
seconds s(1);
milliseconds mi(1); //毫秒
microseconds mic(1); //微秒
//nanoseconds na(1); //纳秒 需要系统的支持
ptime t3(date(2013,4,20));
ptime t4(date(2013,4,20), dur);
ptime t5(date(2013,4,20), mic);
cout << to_simple_string(t3) <<" " << to_simple_string(t5) << endl;
//时间的运算,与日期差不多,非常简单
cout << t2 - t1 << endl;
}
十、格式化时间
主要用来两个类,输入: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");
#include <boost/date_time/gregorian/gregorian.hpp>
void FormatDateTime()
{
using namespace boost::gregorian;
using namespace std;
//输入
date d;
std::string teststring = "140320";
boost::gregorian::date_input_facet *fmt = new boost::gregorian::date_input_facet("%y%m%d");
std::stringstream ss1(teststring);
ss1.imbue(locale(ss1.getloc(), fmt));
ss1 >> d;
cout << d << endl;
//输出
boost::gregorian::date d2(2009, 1, 7);
boost::gregorian::date_facet *fmt2 = new boost::gregorian::date_facet("%A, %d %B %Y");
std::cout.imbue(std::locale(std::cout.getloc(), fmt2));
std::cout << d2 << std::endl;
//定制
std::locale::global(std::locale("German"));
std::string months[12] = { "Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember" };
std::string weekdays[7] = { "Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag" };
boost::gregorian::date d3(2009, 1, 7);
boost::gregorian::date_facet *df = new boost::gregorian::date_facet("%A, %d. %B %Y");
df->long_month_names(std::vector<std::string>(months, months + 12));
df->long_weekday_names(std::vector<std::string>(weekdays, weekdays + 7));
std::cout.imbue(std::locale(std::cout.getloc(), df));
std::cout << d3 << std::endl;
}
(一)boost库之日期、时间的更多相关文章
- Python学习笔记9:标准库之日期时间(time包,datetime包)
一 time包 sleep([float time]) 延迟一段以浮点数表示的秒数 time包基于C语言的库函数(library functions). Python的解释器一般是用C编写的,Pyth ...
- 【Boost】boost库获取格式化时间
获取时间方式 格式一:YYYYMMDD #include<iostream> #include<string> #include<boost/date_time/greg ...
- Java 8——日期时间工具库(java.time)
一.前言 在介绍Java SE 8中新的日期时间库前,先了解下Java 8之前的日期时间工具的诟病. 在Java SE 8前,日期时间工具库在java.util包中,包括: java.util.Dat ...
- C语言日期时间标准库
用思维导图整理: 代码: #include <stdio.h> #include <time.h> #include <string.h> int main() { ...
- js非常强大的日历控件fullcalendar.js, 日期时间库: moment.js
日历控件: https://fullcalendar.io/docs/ https://fullcalendar.io/docs/event_data/events_function/ https:/ ...
- JDK1.8日期时间库学习
这周在阅读<阿里巴巴Java开发手册>时,在并发处理一节的日期处理中,其强调SimpleDateFormat 是线程不安全的类,一般不要定义为 static 变量,如果 定义为 stati ...
- Python中处理日期时间库的使用方法(转载)
<本文来自公众号“大邓带你玩python”,转载> 用百分之20时间,学会解决百分之80的问题. 常用的库有time.datetime.其中datetime库是对time库的封装,所以使用 ...
- 程序员常用6 个 Python 的日期时间库
内建的 datetime 模块 在跳转到其他库之前,让我们回顾一下如何使用 datetime 模块将日期字符串转换为 Python datetime 对象. 假设我们从 API 接受到一个日期字符串, ...
- Java8新特性探索之新日期时间库
一.为什么引入新的日期时间库 Java对日期,日历及时间的处理一直以来都饱受诟病,尤其是它决定将java.util.Date定义为可修改的以及将SimpleDateFormat实现成非线程安全的. 关 ...
随机推荐
- SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型
原文:SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 R2调测 ...
- rc.local自启动学习
在CentOS系统下,主要有三种方法设置自己安装的程序开机启动.1.把启动程序的命令添加到/etc/rc.d/rc.local文件中,比如下面的是设置开机启动httpd. #!/bin/sh # # ...
- Android中调用C++函数的一个简单Demo
这里我不想多解释什么,对于什么JNI和NDK的相关内容大家自己去百度或谷歌.我对Android的学习也只是个新手.废话少说直接进入正题. 一.在Eclipse中创建一个Android Applicat ...
- ActionForward
一.只有登录才能显示的页面 这是一个很平常的问题,在访问某些网页的时候,只有登录才可以访问,以此保证安全. 实现原理也很简单,就是将一个属性设置在session中.在访问的时候进行判断即可. 例:re ...
- HDU 1559 最大子矩阵 (DP)
题目地址:pid=1559">HDU 1559 构造二维前缀和矩阵.即矩阵上的点a[i][j]表示左上方的点为(0,0),右下方的点为(i,j)的矩阵的和.然后枚举每一个矩阵的左上方的 ...
- rhel5.8安装mysql测试
MySQL-rhel5.8 安装:在Linux下安装MySQL有三种方式:第一种以rpm的二进制文件分个安装,第二种是自己编译源码后安装,最后一种是以二进制tar.gz文件来安装(这种安装方式下载安装 ...
- 去除input在谷歌下的focus效果
input:focus{outline: -webkit-focus-ring-color auto 0;}
- CSS的base文件常用代码
article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body,but ...
- HDU 5792 World is Exploding
题意: 给出n代表序列的长度,接下来给出序列A.找出abcd满足abcd互不相等1<=a<b<c<d<=n的同时A[a]<A[b],A[c]>A[d],问这样 ...
- noNamespaceSchemaLocation前添加xsi
在.Net中操作xml文档,给节点添加,xsi:noNamespaceSchemaLocation属性时,不可以使用 XmlElement eleRoot = doc.CreateElement(&q ...