...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 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 explicit date_facet(::size_t = 0); explicit date_facet(const char_type *, const input_collection_type &, ::size_t = 0); explicit 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); virtual void set_iso_format(); virtual 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 virtual OutItrT do_put_special(OutItrT, std::ios_base &, char_type, const boost::date_time::special_values) const; virtual OutItrT do_put_tm(OutItrT, std::ios_base &, char_type, const tm &, string_type) const; // public data members 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/destructexplicit date_facet(::size_t a_ref = 0);
explicit date_facet(const char_type * format_str, const input_collection_type & short_names, ::size_t ref_count = 0);
explicit 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);
virtual void set_iso_format();
virtual 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;