DCL 3.7.4
Loading...
Searching...
No Matches
DateTime.h
Go to the documentation of this file.
1#ifndef __DCL_DATE_TIME_H__
2#define __DCL_DATE_TIME_H__ 20050323
3
4#ifndef __DCL_CONFIG_H__
5#include <dcl/Config.h>
6#endif
7#ifndef __DCL_STRING_H__
8#include <dcl/String.h>
9#endif
10#ifndef __DCL_EXCEPTION_H__
11#include <dcl/Exception.h>
12#endif
13
14__DCL_BEGIN_NAMESPACE
15
16class Date;
17class Time;
18class Interval;
19class DateTime;
20
21#define DATETIME_FORMAT_BUFFER_SIZE 256
22// valid range -9999-01-01 ~ 9999-12-31
23// internal range -599999-01-01 ~ 600000-12-31
25{
26public:
27 Date();
28 Date(const Date& _src);
29 Date(int _year, int _month, int _day);
30
31 void assign(int _year, int _month, int _day);
32
33 // _days == 0 : NULL
34 // _days > 0 : 0001-01-01 ~
35 // _days < 0 : ~ -0001-12-31
36 Date(long _days);
37 void assign(long _days);
38 long days() const;
39
40// long jdays() const { return __jday; }
41
42 const Date& operator ++ ();
43 const Date operator ++ (int);
44 const Date& operator -- ();
45 const Date operator -- (int);
46
47 const Date& operator = (const Date& _src);
48 const Date& operator += (long _days);
49 const Date& operator -= (long _days);
50
51 void decode(int& _year, int& _month, int& _day) const;
52
53 int year() const;
54 int month() const;
55 int day() const;
56
57 int dayOfWeek() const;
58 int dayOfYear() const;
59 int daysInMonth() const;
60 int daysInYear() const;
61
62 // yyyy-mm-dd
63 String toString() const;
64
65 // strftime
66 static const wchar_t* FORMAT_STRING; // ISO 8601 format %Y-%m-%d
67
68 String toStringF(const wchar_t* _format = NULL) const;
69
70 // 0001-01-01 <= date <= 9999-12-31
71 static bool isValid(int y, int m, int d);
72 static bool isLeapYear(int _year);
73
74protected:
75 long __jday;
76
77 static long convertGregorianToJulian(
78 int _year, int _month, int _day
79 );
80
81 static void convertJulianToGregorian(
82 long uJulianDays,
83 int& _year, int& _month, int& _day
84 );
85};
86
87DCLCAPI Date operator + (const Date& _date, long _days);
88DCLCAPI Date operator + (long _days, const Date& _date);
89DCLCAPI Date operator - (const Date& _date, long _days);
90
91// return days
92DCLCAPI long operator - (const Date& _date1, const Date& _date2);
93
94DCLCAPI bool operator == (const Date& _date1, const Date& _date2);
95DCLCAPI bool operator != (const Date& _date1, const Date& _date2);
96DCLCAPI bool operator >= (const Date& _date1, const Date& _date2);
97DCLCAPI bool operator <= (const Date& _date1, const Date& _date2);
98DCLCAPI bool operator > (const Date& _date1, const Date& _date2);
99DCLCAPI bool operator < (const Date& _date1, const Date& _date2);
100
102{
103public:
104 Time();
105 Time(const Time& _src);
106 Time(int _hour, int _min, int _sec, int _millisecond = 0);
107 Time(long _milliseconds);
108
109 void assign(int _hour, int _min, int _sec, int _millisecond = 0);
110 void assign(long _milliseconds);
111
112 const Time& operator = (const Time& _src);
113 const Time& operator += (long _milliseconds);
114 const Time& operator -= (long _milliseconds);
115
116 void decode(int& _hour, int& _min, int& _sec, int& _millisecond) const;
117
118 int hour() const; // 0 ~ 23
119 int minute() const; // 0 ~ 59
120 int second() const; // 0 ~ 59
121 int msecond() const; // 0 ~ 999
122
123 // HH:MM:SS.MS 00:00:00.000
124 String toString() const;
125
126 // strftime
127 static const wchar_t* FORMAT_STRING;
128
129 String toStringF(const wchar_t* _format = NULL);
130
131 long totalMilliSeconds() const; // 0 ~ (86400000 - 1)
132
133 static bool isValid(int _hour, int _min, int _sec, int _millisecond);
134
135protected:
136 unsigned long __milliseconds;
137};
138
139DCLCAPI Time operator + (const Time& _time, long _milliseconds);
140DCLCAPI Time operator + (long _milliseconds, const Time& _time);
141DCLCAPI Time operator - (const Time& _time, long _milliseconds);
142
143// return milliseconds
144DCLCAPI long operator - (const Time& _time1, const Time& _time2);
145
146DCLCAPI bool operator == (const Time& _time1, const Time& _time2);
147DCLCAPI bool operator != (const Time& _time1, const Time& _time2);
148DCLCAPI bool operator >= (const Time& _time1, const Time& _time2);
149DCLCAPI bool operator <= (const Time& _time1, const Time& _time2);
150DCLCAPI bool operator > (const Time& _time1, const Time& _time2);
151DCLCAPI bool operator < (const Time& _time1, const Time& _time2);
152
154{
155public:
156 Interval();
157 Interval(const Interval& _src);
158 Interval(int _days, int _milliseconds);
159 Interval(
160 int _days,
161 int _hours, int _minutes, int _seconds,
162 int _milliseconds = 0
163 );
164
165 Interval(int64_t _milliseconds);
166
167 void assign(int _days, int _milliseconds);
168
169 void assign(
170 int _days,
171 int _hours, int _minutes, int _seconds,
172 int _milliseconds = 0
173 );
174
175 void assign(int64_t _milliseconds);
176
177 const Interval& operator = (const Interval& _src);
178 const Interval& operator += (const Interval& _iv);
179 const Interval& operator -= (const Interval& _iv);
180
181 void decode(
182 long& _days,
183 int& _hours, int& _minutes, int& _seconds,
184 int& _milliseconds
185 ) const;
186
187 void decode(long& _days, long& _milliseconds) const;
188
189 long days() const;
190 int hour() const; // -23 ~ 23
191 int minute() const; // -59 ~ 59
192 int second() const; // -59 ~ 59
193 int msecond() const; // -999 ~ 999
194
195 int64_t totalHours() const;
196 int64_t totalMinutes() const;
197 int64_t totalSeconds() const;
198 int64_t totalMilliSeconds() const;
199
200 // [-]000 days [-]00:00:00.000
201 String toString() const;
202
203protected:
205};
206
207DCLCAPI Interval operator + (const Interval& _iv1, const Interval& _iv2);
208DCLCAPI Interval operator - (const Interval& _iv1, const Interval& _iv2);
209
210DCLCAPI bool operator == (const Interval& _iv1, const Interval& _iv2);
211DCLCAPI bool operator != (const Interval& _iv1, const Interval& _iv2);
212DCLCAPI bool operator >= (const Interval& _iv1, const Interval& _iv2);
213DCLCAPI bool operator <= (const Interval& _iv1, const Interval& _iv2);
214DCLCAPI bool operator > (const Interval& _iv1, const Interval& _iv2);
215DCLCAPI bool operator < (const Interval& _iv1, const Interval& _iv2);
216
218{
219public:
221 DateTime(const DateTime& _src);
222 DateTime(time_t _timer);
223 DateTime(const Date& _date, const Time& _time);
224
225 DateTime(
226 int _year, int _month, int _day,
227 int _hour, int _min, int _sec, int _millisecond = 0
228 );
229
230 void assign(time_t _timer);
231 void assign(const Date& _date, const Time& _time);
232
233 void assign(
234 int _year, int _month, int _day,
235 int _hour, int _min, int _sec, int _millisecond = 0
236 );
237
238 const DateTime& operator = (const DateTime& _src);
239 const DateTime& operator += (const Interval& _iv);
240 const DateTime& operator -= (const Interval& _iv);
241
242 // Date::toString() + Time::toString()
243 String toString() const;
244
245 // stftime
246 static const wchar_t* FORMAT_STRING;
247
248 String toStringF(const wchar_t* _format = NULL) const;
249
250 Date& date();
251 const Date& date() const;
252
253 Time& time();
254 const Time& time() const;
255
256 static int compare(const DateTime& _dt1, const DateTime& _dt2);
257
258 static int64_t getCurrentTimeMillis();
261
262/*
263 static time_t parse(const char* pszDateTimeString)
264 __DCL_THROWS1(ParseException*);
265
266 // strptime
267 static DateTime parseF(
268 const wchar_t* pszDateTimeString,
269 const wchar_t* _format
270 ) __DCL_THROWS1(ParseException*);
271*/
272
273protected:
276
277};
278
279DCLCAPI DateTime operator + (const DateTime& _dt, const Interval& _iv);
280DCLCAPI DateTime operator + (const Interval& _iv, const DateTime& _dt);
281DCLCAPI DateTime operator - (const DateTime& _dt, const Interval& _iv);
282DCLCAPI Interval operator - (const DateTime& _dt1, const DateTime& _dt2);
283
284DCLCAPI bool operator == (const DateTime& _dt1, const DateTime& _dt2);
285DCLCAPI bool operator != (const DateTime& _dt1, const DateTime& _dt2);
286DCLCAPI bool operator >= (const DateTime& _dt1, const DateTime& _dt2);
287DCLCAPI bool operator <= (const DateTime& _dt1, const DateTime& _dt2);
288DCLCAPI bool operator > (const DateTime& _dt1, const DateTime& _dt2);
289DCLCAPI bool operator < (const DateTime& _dt1, const DateTime& _dt2);
290
291#include "DateTime.inl"
292
293__DCL_END_NAMESPACE
294
295#endif // __DCL_DATE_TIME_H__
296
#define NULL
Definition Config.h:312
#define DCLCAPI
Definition Config.h:95
DCLCAPI bool operator>=(const Date &_date1, const Date &_date2)
Definition DateTime.inl:43
DCLCAPI bool operator>(const Date &_date1, const Date &_date2)
Definition DateTime.inl:53
DCLCAPI Date operator-(const Date &_date, long _days)
Definition DateTime.inl:23
DCLCAPI Date operator+(const Date &_date, long _days)
Definition DateTime.cpp:177
DCLCAPI bool operator!=(const Date &_date1, const Date &_date2)
Definition DateTime.inl:38
DCLCAPI bool operator<(const Date &_date1, const Date &_date2)
Definition DateTime.inl:58
DCLCAPI bool operator==(const Date &_date1, const Date &_date2)
Definition DateTime.inl:33
DCLCAPI bool operator<=(const Date &_date1, const Date &_date2)
Definition DateTime.inl:48
long __jday
Definition DateTime.h:75
void assign(int _year, int _month, int _day)
Definition DateTime.cpp:49
long days() const
Definition DateTime.cpp:74
int day() const
Definition DateTime.cpp:203
static long convertGregorianToJulian(int _year, int _month, int _day)
Definition DateTime.cpp:293
static bool isValid(int y, int m, int d)
Definition DateTime.cpp:358
static void convertJulianToGregorian(long uJulianDays, int &_year, int &_month, int &_day)
Definition DateTime.cpp:321
String toStringF(const wchar_t *_format=NULL) const
Definition DateTime.cpp:264
int daysInYear() const
Definition DateTime.cpp:236
int month() const
Definition DateTime.cpp:196
static const wchar_t * FORMAT_STRING
Definition DateTime.h:66
String toString() const
Definition DateTime.cpp:251
int dayOfWeek() const
Definition DateTime.cpp:210
int daysInMonth() const
Definition DateTime.cpp:226
void decode(int &_year, int &_month, int &_day) const
Definition DateTime.cpp:184
Date()
Definition DateTime.cpp:29
int year() const
Definition DateTime.cpp:189
static bool isLeapYear(int _year)
Definition DateTime.cpp:378
int dayOfYear() const
Definition DateTime.cpp:215
Time & time()
Definition DateTime.inl:162
static const wchar_t * FORMAT_STRING
Definition DateTime.h:246
Time __time
Definition DateTime.h:275
static DateTime getCurrentUTCTime()
Definition DateTime.cpp:921
static int64_t getCurrentTimeMillis()
Definition DateTime.cpp:899
String toStringF(const wchar_t *_format=NULL) const
Definition DateTime.cpp:851
Date & date()
Definition DateTime.inl:152
Date __date
Definition DateTime.h:274
static DateTime getCurrentLocalTime()
Definition DateTime.cpp:954
static int compare(const DateTime &_dt1, const DateTime &_dt2)
Definition DateTime.cpp:886
long days() const
Definition DateTime.cpp:644
int64_t totalHours() const
Definition DateTime.cpp:669
int64_t totalMinutes() const
Definition DateTime.cpp:674
void assign(int _days, int _milliseconds)
Definition DateTime.cpp:570
int hour() const
Definition DateTime.cpp:649
int64_t totalSeconds() const
Definition DateTime.cpp:679
String toString() const
Definition DateTime.cpp:684
void decode(long &_days, int &_hours, int &_minutes, int &_seconds, int &_milliseconds) const
Definition DateTime.cpp:626
int minute() const
Definition DateTime.cpp:654
int64_t totalMilliSeconds() const
Definition DateTime.inl:116
int64_t __milliseconds
Definition DateTime.h:204
int msecond() const
Definition DateTime.cpp:664
int second() const
Definition DateTime.cpp:659
String toStringF(const wchar_t *_format=NULL)
Definition DateTime.cpp:506
int hour() const
Definition DateTime.cpp:472
int second() const
Definition DateTime.cpp:482
void decode(int &_hour, int &_min, int &_sec, int &_millisecond) const
Definition DateTime.cpp:464
static const wchar_t * FORMAT_STRING
Definition DateTime.h:127
int msecond() const
Definition DateTime.cpp:487
static bool isValid(int _hour, int _min, int _sec, int _millisecond)
Definition DateTime.cpp:531
int minute() const
Definition DateTime.cpp:477
unsigned long __milliseconds
Definition DateTime.h:136
void assign(int _hour, int _min, int _sec, int _millisecond=0)
Definition DateTime.cpp:412
String toString() const
Definition DateTime.cpp:493
long totalMilliSeconds() const
Definition DateTime.inl:65