gatelib  2.1
g_DateTime.h
1 #pragma once
2 
3 #include "g_common_functions.h"
4 #include <string>
5 #include <iostream>
6 
7 namespace g
8 {
9 typedef long long GIntTime_t;
10 
11 enum GDayOfTheWeek_t
12 {
13  sunday = 0 ,
14  monday = 1 ,
15  tuesday = 2 ,
16  wednesday = 3 ,
17  thursday = 4 ,
18  friday = 5 ,
19  saturday = 6
20 };
21 
22 enum GMonth_t
23 {
24  january = 1 ,
25  february = 2 ,
26  march = 3 ,
27  april = 4 ,
28  may = 5 ,
29  june = 6,
30  july = 7 ,
31  august = 8 ,
32  september = 9 ,
33  october = 10 ,
34  november = 11 ,
35  december = 12
36 };
37 
38 class G_LIB_ITEM Date
39 {
40 public:
41  Date ( int d = 1 , int m = january , int y = 1900 ) { mDay=d; mMonth=(GMonth_t)m; mYear=y; }
42  Date ( const Date& o ) { mDay = o.getDay(); mMonth = o.getMonth();mYear = o.getYear(); }
43 
44  virtual ~Date ( ){}
45 
46  int getDay ( ) const { return mDay; }
47  GMonth_t getMonth ( ) const { return mMonth; }
48  int getYear ( ) const { return mYear; }
49 
50  void setDay ( int d ) { mDay = d; }
51  void setMonth ( int m ) { mMonth = (GMonth_t)m; }
52  void setYear ( int y ) { mYear = y; }
53 
54  Date& operator = ( const Date& o ) { mDay = o.getDay();mMonth = o.getMonth();mYear = o.getYear(); return *this; }
55 
56  std::wstring getStringW ( const char* format = "%x" ) const { return to_Wstring(getString(format)); }
57  std::string getString ( const char* = "%x" ) const;
58 
59  //returns 0 equal -1 d1<d2 +1 d1>d2
60  static int do_Compare ( const Date& d1 , const Date& d2 );
61 
62  bool operator == ( const Date& o ) const { return (do_Compare(*this,o)==0); }
63  bool operator != ( const Date& o ) const { return (do_Compare(*this,o)!=0); }
64  bool operator > ( const Date& o ) const { return (do_Compare(*this,o)>0); }
65  bool operator < ( const Date& o ) const { return (do_Compare(*this,o)<0); }
66 
67  static Date now ( );
68 
69 private:
70  int mDay;
71  GMonth_t mMonth;
72  int mYear;
73  bool mIsDaylightSavingsTime;
74 };
75 
76 class G_LIB_ITEM Time
77 {
78 public:
79  Time ( int h = 0 , int m = 0 , int s = 0 ){ mHour = h; mMinutes = m; mSeconds =s; }
80  Time ( const Time& o ) { mHour = o.getHour() ; mMinutes = o.getMinutes(); mSeconds =o.getSeconds(); }
81  virtual ~Time ( ){}
82 
83  Time& operator = ( const Time& o ) { mHour = o.getHour() ; mMinutes = o.getMinutes(); mSeconds =o.getSeconds(); return *this; }
84 
85  int getHour ( ) const { return mHour; }//0:23
86  int getMinutes ( ) const { return mMinutes; }
87  int getSeconds ( ) const { return mSeconds; }
88 
89  void setHour ( int h ) { mHour = h; }
90  void setMinutes ( int m ) { mMinutes = m; }
91  void setSeconds ( int s ) { mSeconds = s; }
92 
93  //returns 0 equal -1 d1<d2 +1 d1>d2
94  static int do_Compare ( const Time& d1 , const Time& d2 );
95 
96  bool operator == ( const Time& o ) const { return (do_Compare(*this,o)==0); }
97  bool operator != ( const Time& o ) const { return (do_Compare(*this,o)!=0); }
98  bool operator > ( const Time& o ) const { return (do_Compare(*this,o)>0); }
99  bool operator < ( const Time& o ) const { return (do_Compare(*this,o)<0); }
100 
101  //see http://www.cplusplus.com/reference/ctime/strftime/ for format values
102  std::wstring getStringW ( const char* format = "%X" ) const { return to_Wstring(format); }
103  //see http://www.cplusplus.com/reference/ctime/strftime/ for format values
104  std::string getString ( const char* = "%X" ) const;
105 
106  static Time now ( );
107 
108 private:
109  int mHour;
110  int mMinutes;
111  int mSeconds;
112 };
113 
114 //Encapsulates local time
115 class G_LIB_ITEM DateTime
116 {
117 public:
118  DateTime ( int d = 1 , int mo = january , int y = 1900 , int h = 0 , int mi = 0 , int s = 0 ):date(d,mo,y),time(h,mi,s){}
119  DateTime ( GIntTime_t aIntTime ) { setIntTime ( aIntTime ); }
120  DateTime ( const DateTime& o ):date(o.date),time(o.time){}
121  virtual ~DateTime ( ){}
122 
123  DateTime& operator = ( const DateTime& o );
124 
125  //returns 0 equal -1 d1<d2 +1 d1>d2
126  static int do_Compare ( const DateTime& d1 , const DateTime& d2 );
127 
128  bool operator == ( const DateTime& o ) const { return (do_Compare(*this,o)==0); }
129  bool operator != ( const DateTime& o ) const { return (do_Compare(*this,o)!=0); }
130  bool operator > ( const DateTime& o ) const { return (do_Compare(*this,o)>0); }
131  bool operator < ( const DateTime& o ) const { return (do_Compare(*this,o)<0); }
132 
133  //returns integer system time (typically seconds from 1.1.1970)
134  GIntTime_t getIntTime ( ) const;
135  void setIntTime ( GIntTime_t aIntTime );
136 
137  GDayOfTheWeek_t getDayOfTheWeek ( ) const;
138  // 1 = for 1th January 2 for 2nd ..
139  int getDayFromYearBeginning ( ) const;
140 
141  void setUtc ( const DateTime& utc );
142  DateTime getUtc ( ) const;
143 
144  static GIntTime_t getSecondsFromUtc ( );
145 
146  void addSeconds ( GIntTime_t );
147  void addMinutes ( GIntTime_t minutes ) { addSeconds(minutes*60); }
148  void addHour ( GIntTime_t hours ) { addMinutes(hours*60); }
149 
150  //see http://www.cplusplus.com/reference/ctime/strftime/ for format values
151  std::wstring getStringW ( const char* format = "%c" ) const { return g::to_Wstring ( getString ( format ) ); }
152  //see http://www.cplusplus.com/reference/ctime/strftime/ for format values
153  std::string getString ( const char* format = "%c" ) const;
154 
155  bool isDaylightSavingsTime ( ) const;
156 
157  Date date;
158  Time time;
159 
160  static DateTime now ( );
161 private:
162 
163 };
164 
165 inline std::basic_ostream<char>& operator<< (std::basic_ostream<char>& out , const Date& aDate )
166 {
167  out << aDate.getString();
168 
169  return out;
170 }
171 
172 inline std::basic_ostream<char>& operator<< (std::basic_ostream<char> &out, const Time& aTime )
173 {
174  out << aTime.getString();
175 
176  return out;
177 }
178 
179 inline std::basic_ostream<char>& operator<< (std::basic_ostream<char> &out, const DateTime& aDateTime )
180 {
181  out << aDateTime.getString();
182 
183  return out;
184 }
185 
186 inline std::basic_ostream<wchar_t>& operator<< (std::basic_ostream<wchar_t>& out , const Date& aDate )
187 {
188  out << aDate.getStringW();
189 
190  return out;
191 }
192 
193 inline std::basic_ostream<wchar_t>& operator<< (std::basic_ostream<wchar_t> &out, const Time& aTime )
194 {
195  out << aTime.getStringW();
196 
197  return out;
198 }
199 
200 inline std::basic_ostream<wchar_t>& operator<< (std::basic_ostream<wchar_t> &out, const DateTime& aDateTime )
201 {
202  out << aDateTime.getStringW();
203 
204  return out;
205 }
206 
207 }//namespace g
208 
Definition: g.mthread.ThreadSimpleEvent.h:5
Definition: g_DateTime.h:115
std::wstring to_Wstring(const std::string &aString)
Converts a string to a wide strings.
Definition: g_common_functions.h:83
Definition: g_DateTime.h:76
Definition: g_DateTime.h:38