libzypp 17.37.17
Date.h
Go to the documentation of this file.
1/*---------------------------------------------------------------------\
2| ____ _ __ __ ___ |
3| |__ / \ / / . \ . \ |
4| / / \ V /| _/ _/ |
5| / /__ | | | | | | |
6| /_____||_| |_| |_| |
7| |
8\---------------------------------------------------------------------*/
12#ifndef ZYPP_DATE_H
13#define ZYPP_DATE_H
14
15#include <ctime>
16#include <iosfwd>
17#include <string>
18
21
23namespace zypp
24{
25
27 //
28 // CLASS NAME : Date
29 //
33 {
34 friend std::ostream & operator<<( std::ostream & str, const Date & obj );
35
36 public:
37
38 using ValueType = time_t;
39 using Duration = time_t;
40
41 static const ValueType second = 1;
42 static const ValueType minute = 60;
43 static const ValueType hour = 3600;
44 static const ValueType day = 86400;
45 static const ValueType month28 = 2419200;
46 static const ValueType month29 = 2505600;
47 static const ValueType month30 = 2592000;
48 static const ValueType month31 = 2678400;
49 static const ValueType month = month30;
50 static const ValueType year365 = 31536000;
51 static const ValueType year366 = 31622400;
52 static const ValueType year = year365;
53
55
58 : _date( 0 )
59 {}
60
61 Date( ValueType date_r )
62 : _date( date_r )
63 {}
64
65 explicit Date( const std::string & seconds_r );
66
73 Date( const std::string & date_str, const std::string & format );
75 Date( const std::string & date_str, const std::string & format, TimeBase base_r );
76
78 static Date now()
79 { return ::time( 0 ); }
80
81 public:
83 operator ValueType() const
84 { return _date; }
85
88 Date operator+( const time_t rhs ) const { return _date + rhs; }
89 Date operator-( const time_t rhs ) const { return _date - rhs; }
90 Date operator*( const time_t rhs ) const { return _date * rhs; }
91 Date operator/( const time_t rhs ) const { return _date / rhs; }
92
93 Date & operator+=( const time_t rhs ) { _date += rhs; return *this; }
94 Date & operator-=( const time_t rhs ) { _date -= rhs; return *this; }
95 Date & operator*=( const time_t rhs ) { _date *= rhs; return *this; }
96 Date & operator/=( const time_t rhs ) { _date /= rhs; return *this; }
97
98 Date & operator++(/*prefix*/) { _date += 1; return *this; }
99 Date & operator--(/*prefix*/) { _date -= 1; return *this; }
100
101 Date operator++(int/*postfix*/) { return _date++; }
102 Date operator--(int/*postfix*/) { return _date--; }
104
105 public:
112 std::string form( const std::string & format_r ) const
113 { return form( format_r, TB_LOCALTIME ); }
114
115 std::string form( const std::string & format_r, TimeBase base_r ) const;
116
120 std::string asString() const
121 { return form( "%c" ); }
122
126 std::string asSeconds() const
127 { return form( "%s" ); }
128
129 public:
132
142 using DateFormat = base::EnumClass<EDateFormatDef>;
143
151 using TimeFormat = base::EnumClass<ETimeFormatDef>;
152
159 using TimeZoneFormat = base::EnumClass<ETimeZoneFormatDef>;
160
166 std::string print( DateFormat dateFormat_r = DateFormat::calendar, TimeFormat timeFormat_r = TimeFormat::seconds, TimeZoneFormat timeZoneFormat_r = TimeZoneFormat::name, TimeBase base_r = TB_LOCALTIME ) const;
168 std::string print( TimeFormat timeFormat_r, TimeZoneFormat timeZoneFormat_r = TimeZoneFormat::name, TimeBase base_r = TB_LOCALTIME ) const
169 { return print( DateFormat::calendar, timeFormat_r, timeZoneFormat_r, base_r ); }
170
171 std::string print( DateFormat dateFormat_r, TimeZoneFormat timeZoneFormat_r, TimeBase base_r = TB_LOCALTIME ) const
172 { return print( dateFormat_r, TimeFormat::seconds, timeZoneFormat_r, base_r ); }
173
174 std::string print( DateFormat dateFormat_r, TimeFormat timeFormat_r, TimeBase base_r ) const
175 { return print( dateFormat_r, timeFormat_r, TimeZoneFormat::name, base_r ); }
176
177 std::string print( TimeZoneFormat timeZoneFormat_r, TimeBase base_r = TB_LOCALTIME ) const
178 { return print( DateFormat::calendar, TimeFormat::seconds, timeZoneFormat_r, base_r ); }
179
180 std::string print( TimeFormat timeFormat_r, TimeBase base_r ) const
181 { return print( DateFormat::calendar, timeFormat_r, TimeZoneFormat::name, base_r ); }
182
183 std::string print( DateFormat dateFormat_r, TimeBase base_r ) const
184 { return print( dateFormat_r, TimeFormat::seconds, TimeZoneFormat::name, base_r ); }
185
186 std::string print( TimeBase base_r ) const
187 { return print( DateFormat::calendar, TimeFormat::seconds, TimeZoneFormat::name, base_r ); }
188
192 std::string printDate( DateFormat dateFormat_r = DateFormat::calendar, TimeBase base_r = TB_LOCALTIME ) const
193 { return print( dateFormat_r, TimeFormat::none, TimeZoneFormat::none, base_r ); }
194
195 std::string printDate( TimeBase base_r ) const
196 { return printDate( DateFormat::calendar, base_r ); }
197
201 std::string printTime( TimeFormat timeFormat_r = TimeFormat::seconds, TimeZoneFormat timeZoneFormat_r = TimeZoneFormat::name, TimeBase base_r = TB_LOCALTIME ) const
202 { return print( DateFormat::none, timeFormat_r, timeZoneFormat_r, base_r ); }
203
204 std::string printTime( TimeZoneFormat timeZoneFormat_r , TimeBase base_r = TB_LOCALTIME ) const
205 { return printTime( TimeFormat::seconds, timeZoneFormat_r, base_r ); }
206
207 std::string printTime( TimeFormat timeFormat_r , TimeBase base_r ) const
208 { return printTime( timeFormat_r, TimeZoneFormat::name, base_r ); }
209
210 std::string printTime( TimeBase base_r ) const
211 { return printTime( TimeFormat::seconds, TimeZoneFormat::name, base_r ); }
212
218 std::string printISO( DateFormat dateFormat_r = DateFormat::calendar, TimeFormat timeFormat_r = TimeFormat::seconds, TimeZoneFormat timeZoneFormat_r = TimeZoneFormat::name, TimeBase base_r = TB_LOCALTIME ) const;
220 std::string printISO( TimeFormat timeFormat_r, TimeZoneFormat timeZoneFormat_r = TimeZoneFormat::name, TimeBase base_r = TB_LOCALTIME ) const
221 { return printISO( DateFormat::calendar, timeFormat_r, timeZoneFormat_r, base_r ); }
222
223 std::string printISO( DateFormat dateFormat_r, TimeZoneFormat timeZoneFormat_r, TimeBase base_r = TB_LOCALTIME ) const
224 { return printISO( dateFormat_r, TimeFormat::seconds, timeZoneFormat_r, base_r ); }
225
226 std::string printISO( DateFormat dateFormat_r, TimeFormat timeFormat_r, TimeBase base_r ) const
227 { return printISO( dateFormat_r, timeFormat_r, TimeZoneFormat::name, base_r ); }
228
229 std::string printISO( TimeZoneFormat timeZoneFormat_r, TimeBase base_r = TB_LOCALTIME ) const
230 { return printISO( DateFormat::calendar, TimeFormat::seconds, timeZoneFormat_r, base_r ); }
231
232 std::string printISO( TimeFormat timeFormat_r, TimeBase base_r ) const
233 { return printISO( DateFormat::calendar, timeFormat_r, TimeZoneFormat::name, base_r ); }
234
235 std::string printISO( DateFormat dateFormat_r, TimeBase base_r ) const
236 { return printISO( dateFormat_r, TimeFormat::seconds, TimeZoneFormat::name, base_r ); }
237
238 std::string printISO( TimeBase base_r ) const
239 { return printISO( DateFormat::calendar, TimeFormat::seconds, TimeZoneFormat::name, base_r ); }
240
241
242 private:
248 };
249
250
252 inline std::ostream & operator<<( std::ostream & str, const Date & obj )
253 { return str << obj.asString(); }
254
258 std::ostream & dumpAsXmlOn( std::ostream & str, const Date & obj, const std::string & name_r = "date" ) ZYPP_API;
259
262 {
263 public:
264 DateFormatException( const std::string & msg ) : Exception( msg )
265 {}
266 };
267
269} // namespace zypp
271#endif // ZYPP_DATE_H
DateFormatException(const std::string &msg)
Definition Date.h:264
Store and operate on date (time_t).
Definition Date.h:33
ValueType _date
Calendar time.
Definition Date.h:247
Date & operator+=(const time_t rhs)
Definition Date.h:93
std::string printTime(TimeZoneFormat timeZoneFormat_r, TimeBase base_r=TB_LOCALTIME) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition Date.h:204
std::string print(DateFormat dateFormat_r=DateFormat::calendar, TimeFormat timeFormat_r=TimeFormat::seconds, TimeZoneFormat timeZoneFormat_r=TimeZoneFormat::name, TimeBase base_r=TB_LOCALTIME) const
Default format is '2014-02-07 07:06:41 CET' The default is DateFormat::calendar, TimeFormat::seconds,...
Definition Date.cc:193
static const ValueType year365
Definition Date.h:50
std::string printTime(TimeFormat timeFormat_r, TimeBase base_r) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition Date.h:207
std::string printISO(DateFormat dateFormat_r=DateFormat::calendar, TimeFormat timeFormat_r=TimeFormat::seconds, TimeZoneFormat timeZoneFormat_r=TimeZoneFormat::name, TimeBase base_r=TB_LOCALTIME) const
Default ISO 8601 format is '2014-02-07T07:06:41+01'
Definition Date.cc:209
Date()
Default ctor: 0.
Definition Date.h:57
@ TB_LOCALTIME
Definition Date.h:54
@ TB_UTC
Definition Date.h:54
static const ValueType hour
Definition Date.h:43
Date & operator*=(const time_t rhs)
Definition Date.h:95
std::string printISO(TimeZoneFormat timeZoneFormat_r, TimeBase base_r=TB_LOCALTIME) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition Date.h:229
Date operator++(int)
Definition Date.h:101
static const ValueType day
Definition Date.h:44
Date operator+(const time_t rhs) const
Definition Date.h:88
std::string printISO(DateFormat dateFormat_r, TimeBase base_r) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition Date.h:235
static const ValueType month31
Definition Date.h:48
static const ValueType minute
Definition Date.h:42
std::string printISO(TimeFormat timeFormat_r, TimeZoneFormat timeZoneFormat_r=TimeZoneFormat::name, TimeBase base_r=TB_LOCALTIME) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition Date.h:220
Date operator/(const time_t rhs) const
Definition Date.h:91
std::string print(TimeBase base_r) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition Date.h:186
std::string printISO(TimeBase base_r) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition Date.h:238
std::string print(TimeFormat timeFormat_r, TimeZoneFormat timeZoneFormat_r=TimeZoneFormat::name, TimeBase base_r=TB_LOCALTIME) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition Date.h:168
std::string print(DateFormat dateFormat_r, TimeFormat timeFormat_r, TimeBase base_r) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition Date.h:174
base::EnumClass< EDateFormatDef > DateFormat
'enum class DateFormat'
Definition Date.h:142
static const ValueType month30
Definition Date.h:47
std::string printISO(TimeFormat timeFormat_r, TimeBase base_r) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition Date.h:232
static const ValueType month
Definition Date.h:49
Date operator-(const time_t rhs) const
Definition Date.h:89
Date & operator-=(const time_t rhs)
Definition Date.h:94
std::string print(TimeFormat timeFormat_r, TimeBase base_r) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition Date.h:180
static const ValueType year366
Definition Date.h:51
time_t Duration
Definition Date.h:39
std::string printTime(TimeFormat timeFormat_r=TimeFormat::seconds, TimeZoneFormat timeZoneFormat_r=TimeZoneFormat::name, TimeBase base_r=TB_LOCALTIME) const
Convenience for printing the time only ['07:06:41 CET'] The default is DateFormat::calendar and TB_LO...
Definition Date.h:201
base::EnumClass< ETimeZoneFormatDef > TimeZoneFormat
'enum class TimeZoneFormat'
Definition Date.h:159
Date & operator--()
Definition Date.h:99
time_t ValueType
Definition Date.h:38
std::string asString() const
Default string representation of Date.
Definition Date.h:120
std::string print(DateFormat dateFormat_r, TimeZoneFormat timeZoneFormat_r, TimeBase base_r=TB_LOCALTIME) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition Date.h:171
std::string form(const std::string &format_r) const
Return string representation according to format as localtime.
Definition Date.h:112
std::string printISO(DateFormat dateFormat_r, TimeFormat timeFormat_r, TimeBase base_r) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition Date.h:226
Date(ValueType date_r)
Ctor taking time_t value.
Definition Date.h:61
static const ValueType month28
Definition Date.h:45
base::EnumClass< ETimeFormatDef > TimeFormat
'enum class TimeFormat'
Definition Date.h:151
static const ValueType month29
Definition Date.h:46
Date operator--(int)
Definition Date.h:102
std::string asSeconds() const
Convert to string representation of calendar time in numeric form (like "1029255142").
Definition Date.h:126
Date & operator/=(const time_t rhs)
Definition Date.h:96
static const ValueType second
Definition Date.h:41
friend std::ostream & operator<<(std::ostream &str, const Date &obj)
static Date now()
Return the current time.
Definition Date.h:78
std::string print(TimeZoneFormat timeZoneFormat_r, TimeBase base_r=TB_LOCALTIME) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition Date.h:177
std::string printDate(TimeBase base_r) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition Date.h:195
std::string printTime(TimeBase base_r) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition Date.h:210
Date operator*(const time_t rhs) const
Definition Date.h:90
std::string printISO(DateFormat dateFormat_r, TimeZoneFormat timeZoneFormat_r, TimeBase base_r=TB_LOCALTIME) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition Date.h:223
std::string print(DateFormat dateFormat_r, TimeBase base_r) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition Date.h:183
static const ValueType year
Definition Date.h:52
std::string printDate(DateFormat dateFormat_r=DateFormat::calendar, TimeBase base_r=TB_LOCALTIME) const
Convenience for printing the date only ['2014-02-07'] The default is DateFormat::calendar and TB_LOCA...
Definition Date.h:192
Date & operator++()
Definition Date.h:98
Exception()
Default ctor.
Definition Exception.cc:94
const std::string & msg() const
Return the message string provided to the ctor.
Definition Exception.h:206
std::string form(const char *format,...) __attribute__((format(printf
Printf style construction of std::string.
Definition String.cc:39
String related utilities and Regular expression matching.
Easy-to use interface to the ZYPP dependency resolver.
std::ostream & dumpAsXmlOn(std::ostream &str, const Repository &obj)
const Arch Arch_armv7hnl Arch_armv7nhl ZYPP_API
Definition Arch.h:247
Date formats for printing (use like 'enum class DateFormat')
Definition Date.h:133
@ calendar
2014-02-07
Definition Date.h:135
@ weekday
2014-W06-5 (1 is Monday)
Definition Date.h:139
Time formats for printing (use like 'enum class TimeFormat')
Definition Date.h:145
Timezone indicator for printing (use like 'enum class TimeZoneFormat')
Definition Date.h:154