【Boost】date构造方法

1. 概述
头文件: <boost/date_time.hpp>
本库采用格里历日期系统, 支持从1400-Jan-01到9999-Dec-31.
类boost::gregorian::date是用户使用的主要时间类型.
2. 构造函数
date_time中使用枚举special_values定义了一些特殊的时间概念,包括:
pos_infin(正无限)
neg_infin(负无限)
not_a_date_time(无效时间)
min_date_time(最小日期或时间)
max_date_time(最大日期或者时间)
另外还提供了5个is_xxx函数,用于检验日期是否是特殊日期,
is_infinity(是否是一个无限日期)
is_neg_infinity(是否是一个负无限日期)
is_pos_infinity(是否是一个正无限日期)
is_not_adate(是否是一个无效日期)
is_special(是否是任意一个特殊日期)
3. 例子

void test_dt_construct()
{
	using namespace boost::gregorian;

	// 1. 常规的构造函数有如下几种:
	date d0;
	date d1(2008, 8, 9);	// 最常用的构造方法
	date d2(d1);			// 复制构造
	date ds1(neg_infin);
	date ds2(pos_infin);
	date ds3(not_a_date_time);
	date ds4(max_date_time);	// 9999-Dec-31
	date ds5(min_date_time);	// 1400-Jan-01

	assert(d0.is_not_a_date());
	assert(d0.is_special());
	assert(ds1.is_special());
	assert(ds2.is_special());
	assert(ds3.is_special());
	assert(!ds4.is_special());
	assert(!ds5.is_special());

	// 2. 通过字符串构造
	date dstr1(from_string("2011/08/09"));
	date dstr2(from_string("2011-08-09"));
	date dstr3(from_string("2011-Feb-28"));
	date dstr4(from_string("2011-February-28"));
	date dstr5(from_undelimited_string("20110809"));

	// 不常用的字符串
	date dstr6(from_us_string("Feb-28-2011"));	// 完整的月份单词也可以
	date dstr7(from_uk_string("28-Feb-2011"));	// 完整的月份单词也可以

	// 3. 通过clock构造
	date dc1(day_clock::local_day());
	date dc2(day_clock::universal_day());

	// 4. 构造时的异常
	try
	{	
		// 年, 月, 日超过范围时会抛异常.
		date d6(1300, 12, 25);
	}
	catch (std::exception& e)
	{
		std::cout << e.what() << std::endl;
	}
}



你可能感兴趣的:(【Boost】date构造方法)