利用boost获取时间并格式化的方法

利用boost来获取当前时间又方便快捷,还不用考虑跨平台的问题。

1.   输出YYYYMMDD

#include <boost/date_time/gregorian/gregorian.hpp>
#define BOOST_DATE_TIME_SOURCE 

std::string strTime = boost::gregorian::to_iso_string(\
boost::gregorian::day_clock::local_day()); 

std::cout << strTime.c_str() << std::endl;

2.   输出YYYYMMDD-HH:MM:SS

#include <boost/date_time/posix_time/posix_time.hpp>
#define BOOST_DATE_TIME_SOURCE 

std::string strTime = boost::posix_time::to_iso_string(\
boost::posix_time::second_clock::local_time()); 

// 这时候strTime里存放时间的格式是YYYYMMDDTHHMMSS,日期和时间用大写字母T隔开了 

int pos = strTime.find('T');
strTime.replace(pos,1,std::string("-"));
strTime.replace(pos + 3,0,std::string(":"));
strTime.replace(pos + 6,0,std::string(":")); 

std::cout << strTime.c_str() << std::endl;

3.   计算时间间隔。boost里计算时间间隔的功能很多很强大,我列举的仅仅是我目前用到的。

#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/thread.hpp>
#define BOOST_DATE_TIME_SOURCE 

boost::posix_time::ptime time_now,time_now1;
boost::posix_time::millisec_posix_time_system_config::time_duration_type time_elapse; 

// 这里为微秒为单位;这里可以将microsec_clock替换成second_clock以秒为单位;
time_now = boost::posix_time::microsec_clock::universal_time(); 

// sleep 100毫秒;
boost::this_thread::sleep(boost::posix_time::millisec(100)); 

time_now1 = boost::posix_time::microsec_clock::universal_time(); 

time_elapse = time_now1 - time_now; 

// 类似GetTickCount,只是这边得到的是2个时间的ticket值的差,以微秒为单位;
int ticks = time_elapse.ticks(); 

// 得到两个时间间隔的秒数;
int sec = time_elapse.total_seconds();

以上这篇利用boost获取时间并格式化的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • VS2010 boost标准库开发环境安装教程

    分享VS2010 boost标准库开发环境安装教程 1. BOOST编译过程非常复杂,目前为了学习BOOST,首先搭建基于VS2010的BOOST开发环境. Boost库是一个可移植.提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一.Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容.在C++社区中影响甚大,是不折不扣的"准"标准库.Boost由于其对跨平台的强调,对标准C++的强调,与编写平台无关.大部分boost库功能

  • 使用boost读取XML文件详细介绍

    boost读取XML文件 boost中提供了对配置文件读取的支持,它就是:property_tree. basic_ptree 是property_tree的核心基础.其接口像std::list.可以执行很多基本的元素操作,比如使用begin().end()等.     此外还加入了操作属性树的get().get_child().get_value().data()等额外的操作. basic_ptree有两个重要的内部定义self_type和value_type.self_type是basic_

  • C++中Boost库裁剪与其应用详解

    前言 Boost 库涵盖的范围极广,有字符串和文本处理相关子库比如 format 库和 regexp 库,有容器相关子库比如 variant 库(和 Qt 的 QVariant 有得一拼),有迭代器子库比如 tokenizer 库(可以把字符进行 tokenize),还有算法.函数对象和高阶编程相关子库如functional 库.lambda 库和 signal 库,还有泛型编程.模板编程子库如 call traits.mpl,还有并发编程相关的 thread 库,等等等等. Boost 是如此

  • VS2013安装配置和使用Boost库教程

    一.前言 好好研究下大名鼎鼎的Boost库. 二.Boost安装 2.1Boost官网下载Boost最新版Version 1.55.0 2.2将下载压缩包解压到本地 解压后可看到目录下有个bootstrap.bat文件. 2.3打开cmd命令窗体,执行bootstra.bat文件 运行下面命令,详细依据自己的环境略有变化. 最基本的目的是我们要执行bootstrap.bat文件 运行完后,结果例如以下: 然后在目录下我们会发现新生成了一个名为bjam.exe的文件 2.4在cmd窗体中执行bja

  • 使用设计模式中的单例模式来实现C++的boost库

    线程安全的单例模式 一.懒汉模式:即第一次调用该类实例的时候才产生一个新的该类实例,并在以后仅返回此实例. 需要用锁,来保证其线程安全性:原因:多个线程可能进入判断是否已经存在实例的if语句,从而non thread safety. 使用double-check来保证thread safety.但是如果处理大量数据时,该锁才成为严重的性能瓶颈. 1.静态成员实例的懒汉模式: class Singleton { private: static Singleton* m_instance; Sing

  • visual studio 2015下boost库配置教程

    因为我也是第一尝试配置,所以有很多不懂得地方,上网找的教程又很多都是老版本的VS,比如VS2010 VS2012又或者Boost1.54之类的. **我根据自己的配置情况给大家一个建议.** 仅给有需要的人以参考用,如有不合适的地方,敬请纠正 首先,我们需要下载一个Boost库. 这个直接去他的官网下就可以了:boost下载地址 下载好后解压到一个目录里.比如我解压到D盘根目录 然后我们打开[开始菜单]->[找到你对应版本的vs命令窗口,比如我是vs2015的]P.s:一定要对应自己的VS版本

  • 利用boost获取时间并格式化的方法

    利用boost来获取当前时间又方便快捷,还不用考虑跨平台的问题. 1.   输出YYYYMMDD #include <boost/date_time/gregorian/gregorian.hpp> #define BOOST_DATE_TIME_SOURCE std::string strTime = boost::gregorian::to_iso_string(\ boost::gregorian::day_clock::local_day()); std::cout <<

  • JS获取当前时间的年月日时分秒及时间的格式化的方法

    1.获取当前时间 var myDate = new Date(); 2.获取时间中的年月日时分秒 myDate.getYear(); // 获取当前年份(2位) myDate.getFullYear(); // 获取完整的年份(4位,1970-????) myDate.getMonth(); // 获取当前月份(0-11,0代表1月) myDate.getDate(); // 获取当前日(1-31) myDate.getDay(); // 获取当前星期X(0-6,0代表星期天) myDate.g

  • 利用Java获取文件名、类名、方法名和行号的方法小结

    大家都知道,在C语言中,我们可以通过宏FILE. __LINE__来获取文件名和行号,而在Java语言中,则可以通过StackTraceElement类来获取文件名.类名.方法名.行号,具体代码如下: public static int getLineNumber( ){ StackTraceElement[] stackTrace = new Throwable().getStackTrace(); return stackTrace[1].getLineNumber( ); } public

  • iOS利用摄像头获取环境光感参数的方法

    本文介绍了iOS利用摄像头获取环境光感参数的方法,分享给大家,具体如下: 不多说,代码如下: #import "LightSensitiveViewController.h" @import AVFoundation; #import <ImageIO/ImageIO.h> @interface LightSensitiveViewController ()< AVCaptureVideoDataOutputSampleBufferDelegate> @prop

  • 利用ctypes获取numpy数组的指针方法

    如下所示: import numpy as np from ctypes import * a = np.asarray(range(16), dtype=np.int32).reshape([4,4]) if not a.flags['C_CONTIGUOUS']: a = np.ascontiguous(a, dtype=a.dtype) # 如果不是C连续的内存,必须强制转换 a_ctypes_ptr = cast(a.ctypes.data, POINTER(c_int)) #转换为ct

  • C++中Boost.Chrono时间库的使用方法

    前言 大家应该都有所体会,时钟这个东西在程序中扮演者重要的角色,在系统编程的时候睡眠.带超时的等待.带超时的条件变量.带超时的锁都会用到,但是往往对特定系统依赖性很大,感觉即使不考虑系统的跨平台性,如果能使用一个稳定的接口,同时如果能够方便的对时刻.时段等进行相关的操作和运算,将是再好不过的了. 在boost库中和时间相关的库有Boost.DateTime和Boost.Chrono,前者专注于时间时刻以及本地化相关的内容,而后者主要是时刻.时长和时间的计算等内容.当然,C++11标准已经支持st

  • js获取时间精确到秒(年月日)

    本文实例为大家分享了利用js获取时间并输出值的全部代码,供大家参考学习,具体内容如下 实现代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="gb2312"> <title></title> <script type="text/javascript"> window.onload=function

  • 使用Smarty 获取当前日期时间和格式化日期时间的方法详解

    在Smarty 中获取当前日期时间和格式化日期时间与PHP中有些不同的地方,这里就为您详细介绍: 首先是获取当前的日期时间:在PHP中我们会使用date函数来获取当前的时间,实例代码如下:date("Y-m-dH:i:s");   //该结果会显示为:2010-07-27 21:19:36 的模式 但是在Smarty 模板中我们就不能使用date 了,而是应该使用 now 来获取当前的时间,实例代码如下:{$smarty.now}      //该结果会显示为:1280236776的时

  • java获取当前日期和时间的二种方法分享

    有两种方法:方法一:用java.util.Date类来实现,并结合java.text.DateFormat类来实现时间的格式化,看下面代码: 复制代码 代码如下: import java.util.*;import java.text.*;//以下默认时间日期显示方式都是汉语语言方式//一般语言就默认汉语就可以了,时间日期的格式默认为MEDIUM风格,比如:2008-6-16 20:54:53//以下显示的日期时间都是再Date类的基础上的来的,还可以利用Calendar类来实现见类TestDa

  • php利用curl获取远程图片实现方法

    curl要求php环境支持才行,可以运行phpinfo()函数是否支持,一般要将php.ini中;extension=php_curl.dll前的;去掉,重新启动IIS或者APACHE就可以了. 代码如下: /* *@通过curl方式获取指定的图片到本地 *@ 完整的图片地址 *@ 要存储的文件名 */ function getImg($url = "", $filename = "") { //去除URL连接上面可能的引号 //$url = preg_replac

随机推荐