annotate DEPENDENCIES/generic/include/boost/date_time/gregorian/formatters.hpp @ 133:4acb5d8d80b6 tip

Don't fail environmental check if README.md exists (but .txt and no-suffix don't)
author Chris Cannam
date Tue, 30 Jul 2019 12:25:44 +0100
parents c530137014c0
children
rev   line source
Chris@16 1 #ifndef GREGORIAN_FORMATTERS_HPP___
Chris@16 2 #define GREGORIAN_FORMATTERS_HPP___
Chris@16 3
Chris@16 4 /* Copyright (c) 2002,2003 CrystalClear Software, Inc.
Chris@16 5 * Use, modification and distribution is subject to the
Chris@16 6 * Boost Software License, Version 1.0. (See accompanying
Chris@16 7 * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
Chris@16 8 * Author: Jeff Garland, Bart Garst
Chris@101 9 * $Date$
Chris@16 10 */
Chris@16 11
Chris@16 12 #include "boost/date_time/compiler_config.hpp"
Chris@16 13 #include "boost/date_time/gregorian/gregorian_types.hpp"
Chris@16 14 #if defined(BOOST_DATE_TIME_INCLUDE_LIMITED_HEADERS)
Chris@16 15 #include "boost/date_time/date_formatting_limited.hpp"
Chris@16 16 #else
Chris@16 17 #include "boost/date_time/date_formatting.hpp"
Chris@16 18 #endif
Chris@16 19 #include "boost/date_time/iso_format.hpp"
Chris@16 20 #include "boost/date_time/date_format_simple.hpp"
Chris@16 21
Chris@16 22 /* NOTE: "to_*_string" code for older compilers, ones that define
Chris@16 23 * BOOST_DATE_TIME_INCLUDE_LIMITED_HEADERS, is located in
Chris@16 24 * formatters_limited.hpp
Chris@16 25 */
Chris@16 26
Chris@16 27 namespace boost {
Chris@16 28 namespace gregorian {
Chris@16 29
Chris@16 30 // wrapper function for to_simple_(w)string(date)
Chris@16 31 template<class charT>
Chris@16 32 inline
Chris@16 33 std::basic_string<charT> to_simple_string_type(const date& d) {
Chris@16 34 return date_time::date_formatter<date,date_time::simple_format<charT>,charT>::date_to_string(d);
Chris@16 35 }
Chris@16 36 //! To YYYY-mmm-DD string where mmm 3 char month name. Example: 2002-Jan-01
Chris@16 37 /*!\ingroup date_format
Chris@16 38 */
Chris@16 39 inline std::string to_simple_string(const date& d) {
Chris@16 40 return to_simple_string_type<char>(d);
Chris@16 41 }
Chris@16 42
Chris@16 43
Chris@16 44 // wrapper function for to_simple_(w)string(date_period)
Chris@16 45 template<class charT>
Chris@16 46 inline std::basic_string<charT> to_simple_string_type(const date_period& d) {
Chris@16 47 typedef std::basic_string<charT> string_type;
Chris@16 48 charT b = '[', m = '/', e=']';
Chris@16 49
Chris@16 50 string_type d1(date_time::date_formatter<date,date_time::simple_format<charT>,charT>::date_to_string(d.begin()));
Chris@16 51 string_type d2(date_time::date_formatter<date,date_time::simple_format<charT>,charT>::date_to_string(d.last()));
Chris@16 52 return string_type(b + d1 + m + d2 + e);
Chris@16 53 }
Chris@16 54 //! Convert date period to simple string. Example: [2002-Jan-01/2002-Jan-02]
Chris@16 55 /*!\ingroup date_format
Chris@16 56 */
Chris@16 57 inline std::string to_simple_string(const date_period& d) {
Chris@16 58 return to_simple_string_type<char>(d);
Chris@16 59 }
Chris@16 60
Chris@16 61 // wrapper function for to_iso_(w)string(date_period)
Chris@16 62 template<class charT>
Chris@16 63 inline std::basic_string<charT> to_iso_string_type(const date_period& d) {
Chris@16 64 charT sep = '/';
Chris@16 65 std::basic_string<charT> s(date_time::date_formatter<date,date_time::iso_format<charT>,charT>::date_to_string(d.begin()));
Chris@16 66 return s + sep + date_time::date_formatter<date,date_time::iso_format<charT>,charT>::date_to_string(d.last());
Chris@16 67 }
Chris@16 68 //! Date period to iso standard format CCYYMMDD/CCYYMMDD. Example: 20021225/20021231
Chris@16 69 /*!\ingroup date_format
Chris@16 70 */
Chris@16 71 inline std::string to_iso_string(const date_period& d) {
Chris@16 72 return to_iso_string_type<char>(d);
Chris@16 73 }
Chris@16 74
Chris@16 75
Chris@16 76 // wrapper function for to_iso_extended_(w)string(date)
Chris@16 77 template<class charT>
Chris@16 78 inline std::basic_string<charT> to_iso_extended_string_type(const date& d) {
Chris@16 79 return date_time::date_formatter<date,date_time::iso_extended_format<charT>,charT>::date_to_string(d);
Chris@16 80 }
Chris@16 81 //! Convert to iso extended format string CCYY-MM-DD. Example 2002-12-31
Chris@16 82 /*!\ingroup date_format
Chris@16 83 */
Chris@16 84 inline std::string to_iso_extended_string(const date& d) {
Chris@16 85 return to_iso_extended_string_type<char>(d);
Chris@16 86 }
Chris@16 87
Chris@16 88 // wrapper function for to_iso_(w)string(date)
Chris@16 89 template<class charT>
Chris@16 90 inline std::basic_string<charT> to_iso_string_type(const date& d) {
Chris@16 91 return date_time::date_formatter<date,date_time::iso_format<charT>,charT>::date_to_string(d);
Chris@16 92 }
Chris@16 93 //! Convert to iso standard string YYYYMMDD. Example: 20021231
Chris@16 94 /*!\ingroup date_format
Chris@16 95 */
Chris@16 96 inline std::string to_iso_string(const date& d) {
Chris@16 97 return to_iso_string_type<char>(d);
Chris@16 98 }
Chris@16 99
Chris@16 100
Chris@16 101
Chris@16 102
Chris@16 103 // wrapper function for to_sql_(w)string(date)
Chris@16 104 template<class charT>
Chris@16 105 inline std::basic_string<charT> to_sql_string_type(const date& d)
Chris@16 106 {
Chris@16 107 date::ymd_type ymd = d.year_month_day();
Chris@16 108 std::basic_ostringstream<charT> ss;
Chris@16 109 ss << ymd.year << "-"
Chris@16 110 << std::setw(2) << std::setfill(ss.widen('0'))
Chris@16 111 << ymd.month.as_number() //solves problem with gcc 3.1 hanging
Chris@16 112 << "-"
Chris@16 113 << std::setw(2) << std::setfill(ss.widen('0'))
Chris@16 114 << ymd.day;
Chris@16 115 return ss.str();
Chris@16 116 }
Chris@16 117 inline std::string to_sql_string(const date& d) {
Chris@16 118 return to_sql_string_type<char>(d);
Chris@16 119 }
Chris@16 120
Chris@16 121
Chris@16 122 #if !defined(BOOST_NO_STD_WSTRING)
Chris@16 123 //! Convert date period to simple string. Example: [2002-Jan-01/2002-Jan-02]
Chris@16 124 /*!\ingroup date_format
Chris@16 125 */
Chris@16 126 inline std::wstring to_simple_wstring(const date_period& d) {
Chris@16 127 return to_simple_string_type<wchar_t>(d);
Chris@16 128 }
Chris@16 129 //! To YYYY-mmm-DD string where mmm 3 char month name. Example: 2002-Jan-01
Chris@16 130 /*!\ingroup date_format
Chris@16 131 */
Chris@16 132 inline std::wstring to_simple_wstring(const date& d) {
Chris@16 133 return to_simple_string_type<wchar_t>(d);
Chris@16 134 }
Chris@16 135 //! Date period to iso standard format CCYYMMDD/CCYYMMDD. Example: 20021225/20021231
Chris@16 136 /*!\ingroup date_format
Chris@16 137 */
Chris@16 138 inline std::wstring to_iso_wstring(const date_period& d) {
Chris@16 139 return to_iso_string_type<wchar_t>(d);
Chris@16 140 }
Chris@16 141 //! Convert to iso extended format string CCYY-MM-DD. Example 2002-12-31
Chris@16 142 /*!\ingroup date_format
Chris@16 143 */
Chris@16 144 inline std::wstring to_iso_extended_wstring(const date& d) {
Chris@16 145 return to_iso_extended_string_type<wchar_t>(d);
Chris@16 146 }
Chris@16 147 //! Convert to iso standard string YYYYMMDD. Example: 20021231
Chris@16 148 /*!\ingroup date_format
Chris@16 149 */
Chris@16 150 inline std::wstring to_iso_wstring(const date& d) {
Chris@16 151 return to_iso_string_type<wchar_t>(d);
Chris@16 152 }
Chris@16 153 inline std::wstring to_sql_wstring(const date& d) {
Chris@16 154 return to_sql_string_type<wchar_t>(d);
Chris@16 155 }
Chris@16 156 #endif // BOOST_NO_STD_WSTRING
Chris@16 157
Chris@16 158 } } //namespace gregorian
Chris@16 159
Chris@16 160
Chris@16 161 #endif
Chris@16 162