Date Duration (aka Days)
Introduction --
Header --
Construction --
Accessors --
Operators --
Additional Duration Types
Introduction
The class boost::gregorian::date_duration is a simple day count used for arithmetic with gregorian::date. A duration can be either positive or negative.
As of version 1_32 the date_duration class has been typedef'd as days in the boost::gregorian namespace. Throughout the examples you will find days used instead of date_duration.
Header#include "boost/date_time/gregorian/gregorian.hpp" //include all types plus i/o
or
#include "boost/date_time/gregorian/gregorian_types.hpp" //no i/o just typesConstructionSyntaxDescriptionExampledate_duration(long)Create a duration count.date_duration dd(3); //3 daysdays(special_values sv)Constructor for infinities, not-a-date-time, max_date_time, and min_date_timedays dd1(neg_infin);
days dd2(pos_infin);
days dd3(not_a_date_time);
days dd4(max_date_time);
days dd5(min_date_time);AccessorsSyntaxDescriptionExamplelong days() constGet the day count.date_duration dd(3); dd.days() --> 3bool is_negative() constTrue if number of days is less than zero.date_duration dd(-1); dd.is_negative() --> truestatic date_duration unit()Return smallest possible unit of duration type.date_duration::unit() --> date_duration(1)bool is_special() constReturns true if days is any special_valuedays dd(pos_infin);
days dd2(not_a_date_time);
days dd3(25);
dd.is_special(); // --> true
dd2.is_special(); // --> true
dd3.is_special(); // --> falseOperatorsSyntaxDescriptionExampleoperator<<, operator>>Streaming operators. Note: As of version 1.33, streaming operations have been greatly improved. See Date Time IO System for more details (including exceptions and error conditions).date d(not_a_date_time);
stringstream ss("2002-Jan-01");
ss >> d;
std::cout << d; // "2002-Jan-01"
operator==, operator!=,
operator>, operator<,
operator>=, operator<=A full complement of comparison operatorsdd1 == dd2, etcdate_duration operator+(date_duration) constAdd date durations.date_duration dd1(3);
date_duration dd2(5);
date_duration dd3 = dd1 + dd2;date_duration operator-(date_duration) constSubtract durations.date_duration dd1(3);
date_duration dd2(5);
date_duration dd3 = dd1 - dd2;Additional Duration TypesThese additional types are logical representations of spans of days.SyntaxDescriptionExamplemonths(int num_of_months)A logical month representation. Depending on the usage, this months object may cover a span of 28 to 31 days. The objects also use a snap to end-of-month behavior when used in conjunction with a date that is the last day of a given month. WARNING: this behavior may lead to unexpected results. See: Reversibility of Operations Pitfall for complete details and alternatives.months single(1);
date leap_year(2004,Jan,31);
date norm_year(2005,Jan,31);
leap_year + single; // => 2004-Feb-29
norm_year + single; // => 2005-Feb-28
date(2005,Jan,1) + single; // => 2005-Feb-01
date(2005,Feb,1) + single; // => 2005-Mar-01
date(2005,Feb,28) + single; // => 2005-Mar-31years(int num_of_years)A logical representation of a year. The years object has the same behavior as the months objects with regards to the end-of-the-month.years single(1);
date(2003,Feb,28) + single;
// results in => 2004-Feb-29
date(2004,Feb,29) + single;
// results in => 2005-Feb-28weeks(int num_of_weeks)A duration type representing a number of n * 7 days.weeks single(1);
date(2005,Jan,1) + single; // => 2005-Jan-08