...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::date_facet
// In header: <boost/date_time/date_facet.hpp> template<typename date_type, typename CharT, typename OutItrT = std::ostreambuf_iterator<CharT, std::char_traits<CharT> > > class date_facet { public: // types typedef date_type::duration_type duration_type; typedef date_type::day_of_week_type day_of_week_type; typedef date_type::day_type day_type; typedef date_type::month_type month_type; typedef boost::date_time::period< date_type, duration_type > period_type; typedef std::basic_string< CharT > string_type; typedef CharT char_type; typedef boost::date_time::period_formatter< CharT > period_formatter_type; typedef boost::date_time::special_values_formatter< CharT > special_values_formatter_type; typedef std::vector< std::basic_string< CharT > > input_collection_type; typedef date_generator_formatter< date_type, CharT > date_gen_formatter_type; typedef partial_date< date_type > partial_date_type; typedef nth_kday_of_month< date_type > nth_kday_type; typedef first_kday_of_month< date_type > first_kday_type; typedef last_kday_of_month< date_type > last_kday_type; typedef first_kday_after< date_type > kday_after_type; typedef first_kday_before< date_type > kday_before_type; // construct/copy/destruct date_facet(::size_t = 0); date_facet(const char_type *, const input_collection_type &, ::size_t = 0); date_facet(const char_type *, period_formatter_type = period_formatter_type(), special_values_formatter_type = special_values_formatter_type(), date_gen_formatter_type = date_gen_formatter_type(), ::size_t = 0); // public member functions std::locale::id & __get_id(void) const; void format(const char_type *const ) ; void set_iso_format() ; void set_iso_extended_format() ; void month_format(const char_type *const ) ; void weekday_format(const char_type *const ) ; void period_formatter(period_formatter_type) ; void special_values_formatter(const special_values_formatter_type &) ; void short_weekday_names(const input_collection_type &) ; void long_weekday_names(const input_collection_type &) ; void short_month_names(const input_collection_type &) ; void long_month_names(const input_collection_type &) ; void date_gen_phrase_strings(const input_collection_type &, typename date_gen_formatter_type::phrase_elements = date_gen_formatter_type::first) ; OutItrT put(OutItrT, std::ios_base &, char_type, const date_type &) const; OutItrT put(OutItrT, std::ios_base &, char_type, const duration_type &) const; OutItrT put(OutItrT, std::ios_base &, char_type, const month_type &) const; OutItrT put(OutItrT, std::ios_base &, char_type, const day_type &) const; OutItrT put(OutItrT, std::ios_base &, char_type, const day_of_week_type &) const; OutItrT put(OutItrT, std::ios_base &, char_type, const period_type &) const; OutItrT put(OutItrT, std::ios_base &, char_type, const partial_date_type &) const; OutItrT put(OutItrT, std::ios_base &, char_type, const nth_kday_type &) const; OutItrT put(OutItrT, std::ios_base &, char_type, const first_kday_type &) const; OutItrT put(OutItrT, std::ios_base &, char_type, const last_kday_type &) const; OutItrT put(OutItrT, std::ios_base &, char_type, const kday_before_type &) const; OutItrT put(OutItrT, std::ios_base &, char_type, const kday_after_type &) const; // protected member functions tm init_tm(tm &) const; OutItrT do_put_special(OutItrT, std::ios_base &, char_type, const boost::date_time::special_values) const; OutItrT do_put_tm(OutItrT, std::ios_base &, char_type, const tm &, string_type) const; static const char_type long_weekday_format; static const char_type short_weekday_format; static const char_type long_month_format; static const char_type short_month_format; static const char_type default_period_separator; static const char_type standard_format_specifier; static const char_type iso_format_specifier; static const char_type iso_format_extended_specifier; static const char_type default_date_format; static std::locale::id id; };
Class that provides format based I/O facet for date types.
This class allows the formatting of dates by using format string. Format strings are:
A => long_weekday_format - Full name Ex: Tuesday
a => short_weekday_format - Three letter abbreviation Ex: Tue
B => long_month_format - Full name Ex: October
b => short_month_format - Three letter abbreviation Ex: Oct
x => standard_format_specifier - defined by the locale
Y-b-d => default_date_format - YYYY-Mon-dd
Default month format == b Default weekday format == a
date_facet
public
construct/copy/destructdate_facet(::size_t a_ref = 0);
date_facet(const char_type * format_str, const input_collection_type & short_names, ::size_t ref_count = 0);
date_facet(const char_type * format_str, period_formatter_type per_formatter = period_formatter_type(), special_values_formatter_type sv_formatter = special_values_formatter_type(), date_gen_formatter_type dg_formatter = date_gen_formatter_type(), ::size_t ref_count = 0);
date_facet
public member functionsstd::locale::id & __get_id(void) const;
void format(const char_type *const format_str) ;
void set_iso_format() ;
void set_iso_extended_format() ;
void month_format(const char_type *const format_str) ;
void weekday_format(const char_type *const format_str) ;
void period_formatter(period_formatter_type per_formatter) ;
void special_values_formatter(const special_values_formatter_type & svf) ;
void short_weekday_names(const input_collection_type & short_names) ;
void long_weekday_names(const input_collection_type & long_names) ;
void short_month_names(const input_collection_type & short_names) ;
void long_month_names(const input_collection_type & long_names) ;
void date_gen_phrase_strings(const input_collection_type & new_strings, typename date_gen_formatter_type::phrase_elements beg_pos = date_gen_formatter_type::first) ;
OutItrT put(OutItrT next, std::ios_base & a_ios, char_type fill_char, const date_type & d) const;
OutItrT put(OutItrT next, std::ios_base & a_ios, char_type fill_char, const duration_type & dd) const;
OutItrT put(OutItrT next, std::ios_base & a_ios, char_type fill_char, const month_type & m) const;
OutItrT put(OutItrT next, std::ios_base & a_ios, char_type fill_char, const day_type & day) const;puts the day of month
OutItrT put(OutItrT next, std::ios_base & a_ios, char_type fill_char, const day_of_week_type & dow) const;
OutItrT put(OutItrT next, std::ios_base & a_ios, char_type fill_char, const period_type & p) const;
OutItrT put(OutItrT next, std::ios_base & a_ios, char_type fill_char, const partial_date_type & pd) const;
OutItrT put(OutItrT next, std::ios_base & a_ios, char_type fill_char, const nth_kday_type & nkd) const;
OutItrT put(OutItrT next, std::ios_base & a_ios, char_type fill_char, const first_kday_type & fkd) const;
OutItrT put(OutItrT next, std::ios_base & a_ios, char_type fill_char, const last_kday_type & lkd) const;
OutItrT put(OutItrT next, std::ios_base & a_ios, char_type fill_char, const kday_before_type & fkb) const;
OutItrT put(OutItrT next, std::ios_base & a_ios, char_type fill_char, const kday_after_type & fka) const;
date_facet
protected member functionstm init_tm(tm & tm_value) const;Helper function to initialize all fields in a tm struct.
OutItrT do_put_special(OutItrT next, std::ios_base &, char_type, const boost::date_time::special_values sv) const;
OutItrT do_put_tm(OutItrT next, std::ios_base & a_ios, char_type fill_char, const tm & tm_value, string_type a_format) const;