boost date_time

#include <iostream>
#include <boost/date_time/gregorian/gregorian.hpp>
#include <boost/static_assert.hpp>
using namespace std;
using namespace boost::gregorian;

int _tmain(int argc, _TCHAR* argv[])
{
	date d1;
	date d2(2012,12,12);
	date d3(2012, Jan, 1);
	date d4(d2);

	assert(d1==date(not_a_date_time));
	assert(d2==d4);

	d1=from_string("2012-12-10");
	d2=(from_string("2012/12/10"));
	d3=from_undelimited_string("20121210");
	cout<<d1<<endl<<d2<<endl<<d3<<endl<<d4<<endl;

	cout<<day_clock::local_day()<<endl;
	cout<<day_clock::universal_day()<<endl;
	return 0;
}


#include <iostream>
#include <boost/date_time/gregorian/gregorian.hpp>
#include <boost/static_assert.hpp>
using namespace std;
using namespace boost::gregorian;

int _tmain(int argc, _TCHAR* argv[])
{
	date d(2012,3,26);
	assert(d.year()==2012);
	assert(d.month()==3);
	assert(d.day()==26);

	//一次性的获得年月日数据
	date::ymd_type ymd=d.year_month_day();
	assert(ymd.year==2012);
	assert(ymd.month==3);
	assert(ymd.day==26);

	cout<<"今天是"<<d.day_of_week()<<endl;  //输出date的星期数,0表示星期日
	cout<<"今天是今年的第"<<d.day_of_year()<<"天"<<endl;
	cout<<"本周是今年的第"<<d.week_number()<<"周"<<endl;
	cout<<"本月的最后一天是:"<<d.end_of_month()<<endl;

	//几种输出格式的比较
	cout<<to_simple_string(d)<<endl;
	cout<<to_iso_string(d)<<endl;
	cout<<to_iso_extended_string(d)<<endl;
	cout<<d<<endl;
	return 0;
}



 

日期长度:

#include <iostream>
#include <boost/date_time/gregorian/gregorian.hpp>
#include <boost/static_assert.hpp>
using namespace std;
using namespace boost::gregorian;

int _tmain(int argc, _TCHAR* argv[])
{
	days d1(100);
	days d2(-100);

	assert(d1+d2==days(0));
	assert((d1+d2).days()==0);

	weeks w(3);    //三个星期
	assert(w.days()==21);

	months m(5);  //5个月
	years y(2);  //2年

	months m2=y+m;   //2年零5个月
	assert(m2.number_of_months()==29);
	assert(y.number_of_years()*2==4);
	return 0;
}

一些日期的运算:

#include <iostream>
#include <boost/date_time/gregorian/gregorian.hpp>
#include <boost/static_assert.hpp>
using namespace std;
using namespace boost::gregorian;

//一些日期的运算

int _tmain(int argc, _TCHAR* argv[])
{
	date d1(2012,3,26);
	date d2(1991,2,10);
	cout<<"我已经出生了"<<d1-d2<<"天了"<<endl;

	d1+=days(10);
	cout<<to_iso_extended_string(d1)<<endl;

	d1+=months(2);
	cout<<to_iso_extended_string(d1)<<endl;

	d1+=weeks(1);
	cout<<to_iso_extended_string(d1)<<endl;

	d1-=years(2);
	cout<<to_iso_extended_string(d1)<<endl;

	return 0;
}

 

日期区间:

#include <iostream>
#include <boost/date_time/gregorian/gregorian.hpp>
#include <boost/static_assert.hpp>
using namespace std;
using namespace boost::gregorian;

//日期区间

int _tmain(int argc, _TCHAR* argv[])
{
	date_period dp(date(2012,1,1),days(10));
	assert(!dp.is_null());
	assert(dp.begin().day()==1);
	assert(dp.last().day()==10);
	assert(dp.end().day()==11);
	assert(dp.length().days()==10);

	cout<<dp<<endl;
	return 0;
}



日期区间的运算

 

#include <iostream>
#include <boost/date_time/gregorian/gregorian.hpp>
#include <boost/static_assert.hpp>
using namespace std;
using namespace boost::gregorian;

//日期区间的运算

int _tmain(int argc, _TCHAR* argv[])
{
	date_period dp(date(2012,1,1),days(10));
	dp.shift(days(3));
	assert(dp.begin().day()==4);
	assert(dp.length().days()==10);

	dp.expand(days(3));
	assert(dp.begin().day()==1);
	assert(dp.length().days()==16);

	assert(dp.is_after(date(2000,12,12)));
	assert(dp.is_before(date(2013,12,12)));
	assert(dp.contains(date(2012,1,2)));

	return 0;
}
时间: 2024-08-03 02:33:10

boost date_time的相关文章

boost::asio译文

Christopher Kohlhoff Copyright 2003-2012 Christopher M. Kohlhoff 以Boost1.0的软件授权进行发布(见附带的LICENSE_1_0.txt文件或从http://www.boost.org/LICENSE_1_0.txt) Boost.Asio是用于网络和低层IO编程的跨平台C++库,为开发者提供了C++环境下稳定的异步模型. 综述 基本原理 应用程序与外界交互的方式有很多,可通过文件,网络,串口或控制台.例如在网络通信中,完成独

boost库学习随记六:使用同步定时器、异步定时器、bind、成员函数回调处理、多线程的同步处理示例等

一.使用同步定时器 这个示例程序通过展示如何在一个定时器执行一个阻塞等待.       [cpp] view plaincopy   //makefile   #----------------------------------------------------------   #makefile helloworld测试用例   #   #   #   #   #-----------------------------------------------------------   gg

[C++]VS2005(VC8) 使用 Boost

測試環境: [1] Widnows XP Professional [2] Visual Studio 2005 Team Studio(VC8.0) [3] WinCvs 1.3 1. 下載 Boost   透過 CVS 下載最新版   cvs -d:pserver:anonymous@boost.cvs.sourceforge.net:/cvsroot/boost login [詢問密碼時,直接輸入 Enter 略過] cvs -z3 -d:pserver:anonymous@boost.c

boost asio 异步实现tcp通讯

---恢复内容开始--- asioboost   目录(?)[-] 一前言 二实现思路 通讯包数据结构 连接对象 连接管理器 服务器端的实现 对象串行化   一.前言 boost asio可算是一个简单易用,功能又强大可跨平台的C++通讯库,效率也表现的不错,linux环境是epoll实现的,而windows环境是iocp实现的.而tcp通讯是项目当中经常用到通讯方式之一,实现的方法有各式各样,因此总结一套适用于自己项目的方法是很有必要,很可能下一个项目直接套上去就可以用了.   二.实现思路

boost:asio编译

参考:http://hi.baidu.com/need_for_dream/blog/item/c14a28086a504c33e92488b5.html   环境: VS2010,           boost1.38.0,解压缩后放在,D:/boost_1_38_0.     編譯bjam(这个我没有试过,转过来以后参考)利用Visual Studio 2005 Command Prompt開啟DOS視窗,將目錄cd到C:/boost_1_34_1/tools/jam/src下,執行bui

boost 1.56.0 编译及使用

boost的编译和使用,经过搜集资料和总结,记录成文.感谢文后所列参考资料的作者. 1 下载 地址:http://sourceforge.net/projects/boost/files/boost/1.56.0/ 可以选择 boost_1_56_0.7z 下载. 2 编译 2.1 生成boost的自用的编译工具bjam.exe 解压后,使用VS2013编译.首先打开"VS2013 开发人员命令提示",cd 到boost解压后的根目录:E:\XXX\boost_1_56_0,执行boo

[Boost]boost的时间和日期处理-(1)日期的操作

<开篇> Boost.DateTime库提供了时间日期相关的计算.格式化.转换.输入输出等等功能,为C++的编程提供了便利.不过它有如下特点: 1. Boost.DateTime 只支持1400年以后的任何Gregorian日历日期.如果你需要计算再早的日期,则需要寻求其他库来支持. 日期和时间是编程过程中常用的操作.在C标准库中,<time.h>提供了time_t类型.和tm结构类型的时间日期相关函数.Windows API也提供了FILETIME类型的相关函数.由于这里是介绍b

C++ boost 时间与日期处理详细介绍_C 语言

boost 时间与日期处理 导视: 类 特点 缺点 说明 timer 计时基类 不适合大跨度时间 适用大部分的普通计时 progress_timer 继承自timer 可以自动写入流中 只精确到0.01s 如果需要更精确,可派生个类,调用stream的precision设置 progress_display 图形化显示进度 只能输出到cout 如果还有其他输出则会干扰进度显示. 折中的办法是重新显示 pd.restart(size); pd+= pNum; date 日期结构,时间点 -- da

C++中Boost库裁剪与其应用详解_C 语言

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