![]() |
Home | Libraries | People | FAQ | More |
boost::date_time::us_dst_trait — Specification for daylight savings start rules in US.
template<typename date_type> struct us_dst_trait { // types typedef date_type::day_of_week_type day_of_week_type; typedef date_type::month_type month_type; typedef date_type::year_type year_type; typedef date_time::nth_kday_of_month< date_type > start_rule_functor; typedef date_time::first_kday_of_month< date_type > end_rule_functor; typedef date_time::first_kday_of_month< date_type > start_rule_functor_pre2007; typedef date_time::last_kday_of_month< date_type > end_rule_functor_pre2007; // public static functions static day_of_week_type start_day(year_type) ; static month_type start_month(year_type) ; static day_of_week_type end_day(year_type) ; static month_type end_month(year_type) ; static date_type local_dst_start_day(year_type) ; static date_type local_dst_end_day(year_type) ; static int dst_start_offset_minutes() ; static int dst_end_offset_minutes() ; static int dst_shift_length_minutes() ; };
This class is used to configure dst_calc_engine template typically as follows:
using namespace boost::gregorian;
using namespace boost::posix_time;
typedef us_dst_trait<date> us_dst_traits;
typedef boost::date_time::dst_calc_engine<date, time_duration,
us_dst_traits>
us_dst_calc;
//calculate the 2002 transition day of USA April 7 2002
date dst_start = us_dst_calc::local_dst_start_day(2002);
//calculate the 2002 transition day of USA Oct 27 2002
date dst_end = us_dst_calc::local_dst_end_day(2002);
//check if a local time is in dst or not -- posible answers
//are yes, no, invalid time label, ambiguous
ptime t(...some time...);
if (us_dst::local_is_dst(t.date(), t.time_of_day())
== boost::date_time::is_not_in_dst)
{
}
This generates a type suitable for the calculation of dst transitions for the United States. Of course other templates can be used for other locales.
us_dst_trait public static functionsstatic day_of_week_type start_day(year_type) ;
static month_type start_month(year_type y) ;
static day_of_week_type end_day(year_type y) ;
static month_type end_month(year_type y) ;
static date_type local_dst_start_day(year_type year) ;
static date_type local_dst_end_day(year_type year) ;
static int dst_start_offset_minutes() ;
static int dst_end_offset_minutes() ;
static int dst_shift_length_minutes() ;
| Copyright © 2001-2005 CrystalClear Software, Inc |