You.i Engine
YiDateTime.h
Go to the documentation of this file.
1 // © You i Labs Inc. 2000-2017. All rights reserved.
2 #ifndef _YI_DATE_TIME_H_
3 #define _YI_DATE_TIME_H_
4 
5 #include "framework/YiPredef.h"
6 #include "utility/YiString.h"
7 
18 {
19 public:
23  CYIDateTime(const CYIString &rDateTimeString);
24 
29  CYIDateTime(const time_t epochTime);
30 
34  CYIDateTime();
35 
39  virtual ~CYIDateTime();
40 
44  bool IsValid() const;
45 
49  uint32_t GetDay() const;
50 
54  bool SetDay(uint32_t uDay);
55 
59  uint32_t GetMonth() const;
60 
65  bool SetMonth(uint32_t uMonth);
66 
70  uint32_t GetYear() const;
71 
75  bool SetYear(uint32_t uYear);
76 
80  uint32_t GetHour() const;
81 
85  bool SetHour(uint32_t uHour);
86 
90  uint32_t GetMinute() const;
91 
95  bool SetMinute(uint32_t uMinute);
96 
101  uint32_t GetSecond() const;
102 
107  bool SetSecond(uint32_t uSecond);
108 
114  CYIString GetMonthName() const;
115 
122 
128  uint32_t GetDayOfWeek() const;
129 
135  CYIString GetDayOfWeekName() const;
136 
143 
148 
152  bool SetDateTime(const CYIString &rDateTimeString);
153 
157  bool SetDateTimeRFC1123(const CYIString &rDateTimeString);
158 
162  CYIString FormatString(const CYIString &rFormatString) const;
163 
167  CYIString FormatString() const;
168 
172  time_t GetEpochTime() const;
173 
179  bool SetEpochTime(const time_t epochTime);
180 
184  double GetSecondsUntil(const CYIDateTime &rTargetDateTime) const;
185 
189  static double GetDifferenceBetween(const CYIDateTime &rFirstDateTime, const CYIDateTime &rSecondDateTime);
190 
195  static uint32_t GetDaysInMonth(const uint32_t uMonth, const uint32_t uYear);
196 
200  static bool IsLeapYear(const uint32_t uYear);
201 
207  bool AddYears(const int32_t nYears);
208 
214  bool AddMonths(const int32_t nMonths);
215 
221  bool AddDays(const int32_t nDays);
222 
228  bool AddHours(const int32_t nHours);
229 
235  bool AddMinutes(const int32_t nMinutes);
236 
242  bool AddSeconds(const int32_t nSeconds);
243 
244  virtual bool operator==(const CYIDateTime &rOther) const;
245  virtual bool operator!=(const CYIDateTime &rOther) const;
246  virtual bool operator> (const CYIDateTime &rOther) const;
247  virtual bool operator< (const CYIDateTime &rOther) const;
248  virtual bool operator>=(const CYIDateTime &rOther) const;
249  virtual bool operator<=(const CYIDateTime &rOther) const;
250  virtual bool operator+=(const CYIDateTime &rOther);
251  virtual bool operator-=(const CYIDateTime &rOther);
252  virtual CYIDateTime operator+ (const CYIDateTime &rOther) const;
253  virtual CYIDateTime operator- (const CYIDateTime &rOther) const;
254 
255 private:
256  CYIDateTime(const tm &rDateTime);
257  struct tm m_dateTime;
258  time_t m_epochTime;
259  static bool ParseDate(const std::string &rDateTimeString, tm &rDateTime, time_t &rEpochTime);
260  static CYIString ConvertFormatToWindowsStyle(const CYIString &rFormatString);
261 };
262 
263 std::ostream & operator<<(std::ostream &rStream, const CYIDateTime &rVal);
264 
267 #endif /* _YI_DATE_TIME_H_ */
virtual bool operator-=(const CYIDateTime &rOther)
bool SetDateTime(const CYIString &rDateTimeString)
bool AddHours(const int32_t nHours)
virtual bool operator==(const CYIDateTime &rOther) const
uint32_t GetDay() const
Container class for Unicode strings. Conceptually, a CYIString object is a sequence of Unicode charac...
Definition: YiString.h:35
bool SetYear(uint32_t uYear)
CYIString GetDayOfWeekName() const
bool AddMinutes(const int32_t nMinutes)
CYIString GetDayOfWeekShortName() const
CYIString GetMonthShortName() const
uint32_t GetMonth() const
bool AddDays(const int32_t nDays)
virtual bool operator>=(const CYIDateTime &rOther) const
bool AddMonths(const int32_t nMonths)
bool SetDateTimeRFC1123(const CYIString &rDateTimeString)
virtual bool operator>(const CYIDateTime &rOther) const
bool SetHour(uint32_t uHour)
virtual CYIDateTime operator-(const CYIDateTime &rOther) const
virtual bool operator<=(const CYIDateTime &rOther) const
CYIString FormatString() const
static double GetDifferenceBetween(const CYIDateTime &rFirstDateTime, const CYIDateTime &rSecondDateTime)
static uint32_t GetDaysInMonth(const uint32_t uMonth, const uint32_t uYear)
static bool IsLeapYear(const uint32_t uYear)
static CYIDateTime GetCurrentDateTime()
virtual bool operator+=(const CYIDateTime &rOther)
bool SetEpochTime(const time_t epochTime)
time_t GetEpochTime() const
bool SetDay(uint32_t uDay)
bool SetMinute(uint32_t uMinute)
virtual ~CYIDateTime()
uint32_t GetSecond() const
uint32_t GetMinute() const
uint32_t GetDayOfWeek() const
bool IsValid() const
double GetSecondsUntil(const CYIDateTime &rTargetDateTime) const
bool AddYears(const int32_t nYears)
Utility class that requires a string as per the following format: http://en.wikipedia.org/wiki/ISO_8601 to construct an instance and provides some commmonly used parts like year, month, hour etc. in different data types and formats. All dates are in the local timezone unless otherwise specified.
Definition: YiDateTime.h:17
bool SetSecond(uint32_t uSecond)
virtual CYIDateTime operator+(const CYIDateTime &rOther) const
CYIString GetMonthName() const
std::ostream & operator<<(std::ostream &rStream, const CYIDateTime &rVal)
virtual bool operator!=(const CYIDateTime &rOther) const
virtual bool operator<(const CYIDateTime &rOther) const
bool AddSeconds(const int32_t nSeconds)
uint32_t GetHour() const
bool SetMonth(uint32_t uMonth)
uint32_t GetYear() const