...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::time_zone_base — Interface class for dynamic time zones.
// In header: <boost/date_time/time_zone_base.hpp> template<typename time_type, typename CharT> class time_zone_base { public: // types typedef CharT char_type; typedef std::basic_string< CharT > string_type; typedef std::basic_ostringstream< CharT > stringstream_type; typedef time_type::date_type::year_type year_type; typedef time_type::time_duration_type time_duration_type; // construct/copy/destruct time_zone_base(); ~time_zone_base(); // public member functions virtual string_type dst_zone_abbrev() const = 0; virtual string_type std_zone_abbrev() const = 0; virtual string_type dst_zone_name() const = 0; virtual string_type std_zone_name() const = 0; virtual bool has_dst() const = 0; virtual time_type dst_local_start_time(year_type) const = 0; virtual time_type dst_local_end_time(year_type) const = 0; virtual time_duration_type base_utc_offset() const = 0; virtual time_duration_type dst_offset() const = 0; virtual string_type to_posix_string() const = 0; };
This class represents the base interface for all timezone representations. Subclasses may provide different systems for identifying a particular zone. For example some may provide a geographical based zone construction while others may specify the offset from GMT. Another possible implementation would be to convert from POSIX timezone strings. Regardless of the construction technique, this is the interface that these time zone types must provide.
Note that this class is intended to be used as a shared resource (hence the derivation from boost::counted_base.
time_zone_base
public member functionsvirtual string_type dst_zone_abbrev() const = 0;String for the timezone when in daylight savings (eg: EDT)
virtual string_type std_zone_abbrev() const = 0;String for the zone when not in daylight savings (eg: EST)
virtual string_type dst_zone_name() const = 0;String for the timezone when in daylight savings (eg: Eastern Daylight Time)
virtual string_type std_zone_name() const = 0;String for the zone when not in daylight savings (eg: Eastern Standard Time)
virtual bool has_dst() const = 0;True if zone uses daylight savings adjustments otherwise false.
virtual time_type dst_local_start_time(year_type y) const = 0;Local time that DST starts – undefined if has_dst is false.
virtual time_type dst_local_end_time(year_type y) const = 0;Local time that DST ends – undefined if has_dst is false.
virtual time_duration_type base_utc_offset() const = 0;Base offset from UTC for zone (eg: -07:30:00)
virtual time_duration_type dst_offset() const = 0;Adjustment forward or back made while DST is in effect.
virtual string_type to_posix_string() const = 0;Returns a POSIX time_zone string for this object.