DCL 4.1
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
71 // 0001-01-01 <= date <= 9999-12-31
72 static bool isValid(int y, int m, int d);
73
74 static bool isLeapYear(int _year);
75
76protected:
77 long __jday;
78
79 static long convertGregorianToJulian(
80 int _year, int _month, int _day
81 );
82
83 static void convertJulianToGregorian(
84 long uJulianDays,
85 int& _year, int& _month, int& _day
86 );
87};
88
89DCLCAPI Date operator + (const Date& _date, long _days);
90DCLCAPI Date operator + (long _days, const Date& _date);
91DCLCAPI Date operator - (const Date& _date, long _days);
92
93// return days
94DCLCAPI long operator - (const Date& _date1, const Date& _date2);
95
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);
100DCLCAPI bool operator > (const Date& _date1, const Date& _date2);
101DCLCAPI bool operator < (const Date& _date1, const Date& _date2);
102
104{
105public:
106 Time();
107 Time(const Time& _src);
108 Time(int _hour, int _min, int _sec, int _millisecond = 0);
109 Time(long _milliseconds);
110
111 void assign(int _hour, int _min, int _sec, int _millisecond = 0);
112 void assign(long _milliseconds);
113
114 const Time& operator = (const Time& _src);
115 const Time& operator += (long _milliseconds);
116 const Time& operator -= (long _milliseconds);
117
118 void decode(int& _hour, int& _min, int& _sec, int& _millisecond) const;
119
120 int hour() const; // 0 ~ 23
121 int minute() const; // 0 ~ 59
122 int second() const; // 0 ~ 59
123 int msecond() const; // 0 ~ 999
124
125 // HH:MM:SS.MS 00:00:00.000
126 String toString() const;
127
128 // strftime
129 static const wchar_t* FORMAT_STRING;
130
131 String toStringF(const wchar_t* _format = NULL);
132
133 long totalMilliSeconds() const; // 0 ~ (86400000 - 1)
134
135 static bool isValid(int _hour, int _min, int _sec, int _millisecond);
136
137
138protected:
139 unsigned long __milliseconds;
140};
141
142DCLCAPI Time operator + (const Time& _time, long _milliseconds);
143DCLCAPI Time operator + (long _milliseconds, const Time& _time);
144DCLCAPI Time operator - (const Time& _time, long _milliseconds);
145
146// return milliseconds
147DCLCAPI long operator - (const Time& _time1, const Time& _time2);
148
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);
152DCLCAPI bool operator <= (const Time& _time1, const Time& _time2);
153DCLCAPI bool operator > (const Time& _time1, const Time& _time2);
154DCLCAPI bool operator < (const Time& _time1, const Time& _time2);
155
157{
158public:
159 Interval();
160 Interval(const Interval& _src);
161 Interval(int _days, int _milliseconds);
162 Interval(int _days,
163 int _hours, int _minutes, int _seconds,
164 int _milliseconds = 0
165 );
166 Interval(int64_t _milliseconds);
167
168 void assign(int _days, int _milliseconds);
169 void assign(int _days,
170 int _hours, int _minutes, int _seconds,
171 int _milliseconds = 0
172 );
173 void assign(int64_t _milliseconds);
174
175 const Interval& operator = (const Interval& _src);
176 const Interval& operator += (const Interval& _iv);
177 const Interval& operator -= (const Interval& _iv);
178
179 void decode(long& _days,
180 int& _hours, int& _minutes, int& _seconds,
181 int& _milliseconds
182 ) const;
183 void decode(long& _days, long& _milliseconds) const;
184
185 long days() const;
186 int hour() const; // -23 ~ 23
187 int minute() const; // -59 ~ 59
188 int second() const; // -59 ~ 59
189 int msecond() const; // -999 ~ 999
190
191 int64_t totalHours() const;
192 int64_t totalMinutes() const;
193 int64_t totalSeconds() const;
194 int64_t totalMilliSeconds() const;
195
196 // [-]000 days [-]00:00:00.000
197 String toString() const;
198
199protected:
201};
202
203DCLCAPI Interval operator + (const Interval& _iv1, const Interval& _iv2);
204DCLCAPI Interval operator - (const Interval& _iv1, const Interval& _iv2);
205
206DCLCAPI bool operator == (const Interval& _iv1, const Interval& _iv2);
207DCLCAPI bool operator != (const Interval& _iv1, const Interval& _iv2);
208DCLCAPI bool operator >= (const Interval& _iv1, const Interval& _iv2);
209DCLCAPI bool operator <= (const Interval& _iv1, const Interval& _iv2);
210DCLCAPI bool operator > (const Interval& _iv1, const Interval& _iv2);
211DCLCAPI bool operator < (const Interval& _iv1, const Interval& _iv2);
212
214{
215public:
217 DateTime(const DateTime& _src);
218 DateTime(time_t _timer);
219 DateTime(const Date& _date, const Time& _time);
220 DateTime(int _year, int _month, int _day,
221 int _hour, int _min, int _sec, int _millisecond = 0);
222
223 void assign(time_t _timer);
224 void assign(const Date& _date, const Time& _time);
225 void assign(int _year, int _month, int _day,
226 int _hour, int _min, int _sec, int _millisecond = 0);
227
228 const DateTime& operator = (const DateTime& _src);
229 const DateTime& operator += (const Interval& _iv);
230 const DateTime& operator -= (const Interval& _iv);
231
232 // Date::toString() + Time::toString()
233 String toString() const;
234
235 // stftime
236 static const wchar_t* FORMAT_STRING;
237
238 String toStringF(const wchar_t* _format = NULL) const;
239
240 Date& date();
241 const Date& date() const;
242
243 Time& time();
244 const Time& time() const;
245
246 static int compare(const DateTime& _dt1, const DateTime& _dt2);
247
248 static int64_t getCurrentTimeMillis();
251
252/*
253 static time_t parse(const char* pszDateTimeString)
254 __DCL_THROWS1(ParseException*);
255
256 // strptime
257 static DateTime parseF(
258 const wchar_t* pszDateTimeString,
259 const wchar_t* _format
260 ) __DCL_THROWS1(ParseException*);
261*/
262
263protected:
266
267};
268
269DCLCAPI DateTime operator + (const DateTime& _dt, const Interval& _iv);
270DCLCAPI DateTime operator + (const Interval& _iv, const DateTime& _dt);
271DCLCAPI DateTime operator - (const DateTime& _dt, const Interval& _iv);
272DCLCAPI Interval operator - (const DateTime& _dt1, const DateTime& _dt2);
273
274DCLCAPI bool operator == (const DateTime& _dt1, const DateTime& _dt2);
275DCLCAPI bool operator != (const DateTime& _dt1, const DateTime& _dt2);
276DCLCAPI bool operator >= (const DateTime& _dt1, const DateTime& _dt2);
277DCLCAPI bool operator <= (const DateTime& _dt1, const DateTime& _dt2);
278DCLCAPI bool operator > (const DateTime& _dt1, const DateTime& _dt2);
279DCLCAPI bool operator < (const DateTime& _dt1, const DateTime& _dt2);
280
281
282#include "DateTime.inl"
283
284__DCL_END_NAMESPACE
285
286#endif // __DCL_DATE_TIME_H__
287
#define NULL
Definition Config.h:340
#define DCLCAPI
Definition Config.h:100
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:178
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:77
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:204
static long convertGregorianToJulian(int _year, int _month, int _day)
Definition DateTime.cpp:285
static bool isValid(int y, int m, int d)
Definition DateTime.cpp:350
static void convertJulianToGregorian(long uJulianDays, int &_year, int &_month, int &_day)
Definition DateTime.cpp:313
String toStringF(const wchar_t *_format=NULL) const
Definition DateTime.cpp:256
int daysInYear() const
Definition DateTime.cpp:237
int month() const
Definition DateTime.cpp:197
static const wchar_t * FORMAT_STRING
Definition DateTime.h:66
String toString() const
Definition DateTime.cpp:247
int dayOfWeek() const
Definition DateTime.cpp:211
int daysInMonth() const
Definition DateTime.cpp:227
void decode(int &_year, int &_month, int &_day) const
Definition DateTime.cpp:185
Date()
Definition DateTime.cpp:29
int year() const
Definition DateTime.cpp:190
static bool isLeapYear(int _year)
Definition DateTime.cpp:370
int dayOfYear() const
Definition DateTime.cpp:216
Time & time()
Definition DateTime.inl:162
static const wchar_t * FORMAT_STRING
Definition DateTime.h:236
Time __time
Definition DateTime.h:265
static DateTime getCurrentUTCTime()
Definition DateTime.cpp:904
static int64_t getCurrentTimeMillis()
Definition DateTime.cpp:882
String toStringF(const wchar_t *_format=NULL) const
Definition DateTime.cpp:834
Date & date()
Definition DateTime.inl:152
Date __date
Definition DateTime.h:264
static DateTime getCurrentLocalTime()
Definition DateTime.cpp:937
static int compare(const DateTime &_dt1, const DateTime &_dt2)
Definition DateTime.cpp:869
long days() const
Definition DateTime.cpp:637
int64_t totalHours() const
Definition DateTime.cpp:662
int64_t totalMinutes() const
Definition DateTime.cpp:667
void assign(int _days, int _milliseconds)
Definition DateTime.cpp:564
int hour() const
Definition DateTime.cpp:642
int64_t totalSeconds() const
Definition DateTime.cpp:672
String toString() const
Definition DateTime.cpp:677
void decode(long &_days, int &_hours, int &_minutes, int &_seconds, int &_milliseconds) const
Definition DateTime.cpp:619
int minute() const
Definition DateTime.cpp:647
int64_t totalMilliSeconds() const
Definition DateTime.inl:116
int64_t __milliseconds
Definition DateTime.h:200
int msecond() const
Definition DateTime.cpp:657
int second() const
Definition DateTime.cpp:652
String toStringF(const wchar_t *_format=NULL)
Definition DateTime.cpp:500
int hour() const
Definition DateTime.cpp:467
int second() const
Definition DateTime.cpp:477
void decode(int &_hour, int &_min, int &_sec, int &_millisecond) const
Definition DateTime.cpp:459
static const wchar_t * FORMAT_STRING
Definition DateTime.h:129
int msecond() const
Definition DateTime.cpp:482
static bool isValid(int _hour, int _min, int _sec, int _millisecond)
Definition DateTime.cpp:525
int minute() const
Definition DateTime.cpp:472
unsigned long __milliseconds
Definition DateTime.h:139
void assign(int _hour, int _min, int _sec, int _millisecond=0)
Definition DateTime.cpp:406
String toString() const
Definition DateTime.cpp:488
long totalMilliSeconds() const
Definition DateTime.inl:65