...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
boost::date_time::eu_dst_trait — Rules for daylight savings start in the EU (Last Sun in Mar).
// In header: <boost/date_time/local_timezone_defs.hpp> template<typename date_type> struct eu_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::last_kday_of_month< date_type > start_rule_functor; typedef date_time::last_kday_of_month< date_type > end_rule_functor; // 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 int dst_start_offset_minutes() ; static int dst_end_offset_minutes() ; static int dst_shift_length_minutes() ; static date_type local_dst_start_day(year_type) ; static date_type local_dst_end_day(year_type) ; };
These amount to the following:
Start of dst day is last Sunday in March
End day of dst is last Sunday in Oct
Going forward switch time is 2:00 am (offset 120 minutes)
Going back switch time is 3:00 am (off set 180 minutes)
Shift duration is one hour (60 minutes)
eu_dst_trait
public static functionsstatic 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 int dst_start_offset_minutes() ;
static int dst_end_offset_minutes() ;
static int dst_shift_length_minutes() ;
static date_type local_dst_start_day(year_type year) ;
static date_type local_dst_end_day(year_type year) ;