Boost C++ Libraries of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards


Struct template eu_dst_trait

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 functions

  1. static day_of_week_type start_day(year_type);
  2. static month_type start_month(year_type);
  3. static day_of_week_type end_day(year_type);
  4. static month_type end_month(year_type);
  5. static int dst_start_offset_minutes();
  6. static int dst_end_offset_minutes();
  7. static int dst_shift_length_minutes();
  8. static date_type local_dst_start_day(year_type year);
  9. static date_type local_dst_end_day(year_type year);