CLASS TEMPLATE(3)

NAME
boost::date_time::dst_calculator - Dynamic class used to caluclate dst transition information.

SYNOPSIS

// In header: <boost/date_time/dst_rules.hpp>
template<typename date_type_, typename time_duration_type_>
class dst_calculator {
public:
  // types
  typedef time_duration_type_ time_duration_type;
  typedef date_type_          date_type;
  // public static functions
  static time_is_dst_result
  process_local_dst_start_day(const time_duration_type &, unsigned int, long);
  static time_is_dst_result
  process_local_dst_end_day(const time_duration_type &, unsigned int, long);
  static time_is_dst_result
  local_is_dst(const date_type &, const time_duration_type &,
               const date_type &, const time_duration_type &,
               const date_type &, const time_duration_type &,
               const time_duration_type &);
  static time_is_dst_result
  local_is_dst(const date_type &, const time_duration_type &,
               const date_type &, unsigned int, const date_type &,
               unsigned int, long);
};

DESCRIPTION

  dst_calculator public static functions

    1.

    static time_is_dst_result
    process_local_dst_start_day(const time_duration_type & time_of_day,
                                unsigned int dst_start_offset_minutes,
                                long dst_length_minutes);

    Check the local time offset when on dst start day. On this dst transition, the time label between the transition boundary and the boudary + the offset are invalid times. If before the boundary then still not in dst.

    Parameters:

        dst_length_minutes
            Number of minutes to adjust clock forward

        dst_start_offset_minutes
            Local day offset for start of dst

        time_of_day
            Time offset in the day for the local time

    2.

    static time_is_dst_result
    process_local_dst_end_day(const time_duration_type & time_of_day,
                              unsigned int dst_end_offset_minutes,
                              long dst_length_minutes);

    Check the local time offset when on the last day of dst. This is the calculation for the DST end day. On that day times prior to the conversion time - dst_length (1 am in US) are still in dst. Times between the above and the switch time are ambiguous. Times after the start_offset are not in dst.

    Parameters:

        dst_end_offset_minutes
            Local time of day for end of dst

        time_of_day
            Time offset in the day for the local time

    3.

    static time_is_dst_result
    local_is_dst(const date_type & current_day,
                 const time_duration_type & time_of_day,
                 const date_type & dst_start_day,
                 const time_duration_type & dst_start_offset,
                 const date_type & dst_end_day,
                 const time_duration_type & dst_end_offset,
                 const time_duration_type & dst_length_minutes);

    Calculates if the given local time is dst or not. Determines if the time is really in DST or not. Also checks for invalid and ambiguous.

    Parameters:

        current_day
            The day to check for dst

        dst_end_day
            Ending day of dst for the given locality

        dst_end_offset
            Time offset within day given in dst for dst boundary

        dst_length_minutes
            length of dst adjustment

        dst_start_day
            Starting day of dst for the given locality

        dst_start_offset
            Time offset within day for dst boundary

        time_of_day
            Time offset within the day to check

    4.

    static time_is_dst_result
    local_is_dst(const date_type & current_day,
                 const time_duration_type & time_of_day,
                 const date_type & dst_start_day,
                 unsigned int dst_start_offset_minutes,
                 const date_type & dst_end_day,
                 unsigned int dst_end_offset_minutes, long dst_length_minutes);

    Calculates if the given local time is dst or not. Determines if the time is really in DST or not. Also checks for invalid and ambiguous.

    Parameters:

        current_day
            The day to check for dst

        dst_end_day
            Ending day of dst for the given locality

        dst_end_offset_minutes
            Offset within day given in dst for dst boundary (eg 120 for US which is 02:00:00)

        dst_length_minutes
            Length of dst adjusment (eg: 60 for US)

        dst_start_day
            Starting day of dst for the given locality

        dst_start_offset_minutes
            Offset within day for dst boundary (eg 120 for US which is 02:00:00)

        time_of_day
            Time offset within the day to check