Chris@16
|
1 #ifndef DATE_TIME_SIMPLE_FORMAT_HPP___
|
Chris@16
|
2 #define DATE_TIME_SIMPLE_FORMAT_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/parse_format_base.hpp"
|
Chris@16
|
13
|
Chris@16
|
14 namespace boost {
|
Chris@16
|
15 namespace date_time {
|
Chris@16
|
16
|
Chris@16
|
17 //! Class to provide simple basic formatting rules
|
Chris@16
|
18 template<class charT>
|
Chris@16
|
19 class simple_format {
|
Chris@16
|
20 public:
|
Chris@16
|
21
|
Chris@16
|
22 //! String used printed is date is invalid
|
Chris@16
|
23 static const charT* not_a_date()
|
Chris@16
|
24 {
|
Chris@16
|
25 return "not-a-date-time";
|
Chris@16
|
26 }
|
Chris@16
|
27 //! String used to for positive infinity value
|
Chris@16
|
28 static const charT* pos_infinity()
|
Chris@16
|
29 {
|
Chris@16
|
30 return "+infinity";
|
Chris@16
|
31 }
|
Chris@16
|
32 //! String used to for positive infinity value
|
Chris@16
|
33 static const charT* neg_infinity()
|
Chris@16
|
34 {
|
Chris@16
|
35 return "-infinity";
|
Chris@16
|
36 }
|
Chris@16
|
37 //! Describe month format
|
Chris@16
|
38 static month_format_spec month_format()
|
Chris@16
|
39 {
|
Chris@16
|
40 return month_as_short_string;
|
Chris@16
|
41 }
|
Chris@16
|
42 static ymd_order_spec date_order()
|
Chris@16
|
43 {
|
Chris@16
|
44 return ymd_order_iso; //YYYY-MM-DD
|
Chris@16
|
45 }
|
Chris@16
|
46 //! This format uses '-' to separate date elements
|
Chris@16
|
47 static bool has_date_sep_chars()
|
Chris@16
|
48 {
|
Chris@16
|
49 return true;
|
Chris@16
|
50 }
|
Chris@16
|
51 //! Char to sep?
|
Chris@16
|
52 static charT year_sep_char()
|
Chris@16
|
53 {
|
Chris@16
|
54 return '-';
|
Chris@16
|
55 }
|
Chris@16
|
56 //! char between year-month
|
Chris@16
|
57 static charT month_sep_char()
|
Chris@16
|
58 {
|
Chris@16
|
59 return '-';
|
Chris@16
|
60 }
|
Chris@16
|
61 //! Char to separate month-day
|
Chris@16
|
62 static charT day_sep_char()
|
Chris@16
|
63 {
|
Chris@16
|
64 return '-';
|
Chris@16
|
65 }
|
Chris@16
|
66 //! char between date-hours
|
Chris@16
|
67 static charT hour_sep_char()
|
Chris@16
|
68 {
|
Chris@16
|
69 return ' ';
|
Chris@16
|
70 }
|
Chris@16
|
71 //! char between hour and minute
|
Chris@16
|
72 static charT minute_sep_char()
|
Chris@16
|
73 {
|
Chris@16
|
74 return ':';
|
Chris@16
|
75 }
|
Chris@16
|
76 //! char for second
|
Chris@16
|
77 static charT second_sep_char()
|
Chris@16
|
78 {
|
Chris@16
|
79 return ':';
|
Chris@16
|
80 }
|
Chris@16
|
81
|
Chris@16
|
82 };
|
Chris@16
|
83
|
Chris@16
|
84 #ifndef BOOST_NO_STD_WSTRING
|
Chris@16
|
85
|
Chris@16
|
86 //! Specialization of formmating rules for wchar_t
|
Chris@16
|
87 template<>
|
Chris@16
|
88 class simple_format<wchar_t> {
|
Chris@16
|
89 public:
|
Chris@16
|
90
|
Chris@16
|
91 //! String used printed is date is invalid
|
Chris@16
|
92 static const wchar_t* not_a_date()
|
Chris@16
|
93 {
|
Chris@16
|
94 return L"not-a-date-time";
|
Chris@16
|
95 }
|
Chris@16
|
96 //! String used to for positive infinity value
|
Chris@16
|
97 static const wchar_t* pos_infinity()
|
Chris@16
|
98 {
|
Chris@16
|
99 return L"+infinity";
|
Chris@16
|
100 }
|
Chris@16
|
101 //! String used to for positive infinity value
|
Chris@16
|
102 static const wchar_t* neg_infinity()
|
Chris@16
|
103 {
|
Chris@16
|
104 return L"-infinity";
|
Chris@16
|
105 }
|
Chris@16
|
106 //! Describe month format
|
Chris@16
|
107 static month_format_spec month_format()
|
Chris@16
|
108 {
|
Chris@16
|
109 return month_as_short_string;
|
Chris@16
|
110 }
|
Chris@16
|
111 static ymd_order_spec date_order()
|
Chris@16
|
112 {
|
Chris@16
|
113 return ymd_order_iso; //YYYY-MM-DD
|
Chris@16
|
114 }
|
Chris@16
|
115 //! This format uses '-' to separate date elements
|
Chris@16
|
116 static bool has_date_sep_chars()
|
Chris@16
|
117 {
|
Chris@16
|
118 return true;
|
Chris@16
|
119 }
|
Chris@16
|
120 //! Char to sep?
|
Chris@16
|
121 static wchar_t year_sep_char()
|
Chris@16
|
122 {
|
Chris@16
|
123 return '-';
|
Chris@16
|
124 }
|
Chris@16
|
125 //! char between year-month
|
Chris@16
|
126 static wchar_t month_sep_char()
|
Chris@16
|
127 {
|
Chris@16
|
128 return '-';
|
Chris@16
|
129 }
|
Chris@16
|
130 //! Char to separate month-day
|
Chris@16
|
131 static wchar_t day_sep_char()
|
Chris@16
|
132 {
|
Chris@16
|
133 return '-';
|
Chris@16
|
134 }
|
Chris@16
|
135 //! char between date-hours
|
Chris@16
|
136 static wchar_t hour_sep_char()
|
Chris@16
|
137 {
|
Chris@16
|
138 return ' ';
|
Chris@16
|
139 }
|
Chris@16
|
140 //! char between hour and minute
|
Chris@16
|
141 static wchar_t minute_sep_char()
|
Chris@16
|
142 {
|
Chris@16
|
143 return ':';
|
Chris@16
|
144 }
|
Chris@16
|
145 //! char for second
|
Chris@16
|
146 static wchar_t second_sep_char()
|
Chris@16
|
147 {
|
Chris@16
|
148 return ':';
|
Chris@16
|
149 }
|
Chris@16
|
150
|
Chris@16
|
151 };
|
Chris@16
|
152
|
Chris@16
|
153 #endif // BOOST_NO_STD_WSTRING
|
Chris@16
|
154 } } //namespace date_time
|
Chris@16
|
155
|
Chris@16
|
156
|
Chris@16
|
157
|
Chris@16
|
158
|
Chris@16
|
159 #endif
|