Teamcenter C++ API Reference  2312
DateTime.hxx
Go to the documentation of this file.
1 // Copyright 2022 Siemens Digital Industries Software
2 // ==================================================
3 // Copyright 2015
4 // Siemens Product Lifecycle Management Software Inc.
5 // All Rights Reserved.
6 // ==================================================
7 // Copyright 2022 Siemens Digital Industries Software
8 
9 #ifndef TEAMCENTER_DATETIME_HXX
10 #define TEAMCENTER_DATETIME_HXX
11 
12 #include <string>
13 #include <ctime>
14 #include <unidefs.h>
15 #include <base_utils/libbase_utils_exports.h>
16 
17 
18 
19 namespace Teamcenter
20 {
21  class DateTime;
22 }
23 
24 
25 class BASE_UTILS_API Teamcenter::DateTime
26 {
27 public:
28 
34  static const DateTime getNullDate();
35 
36 
40  DateTime();
41 
47  DateTime( time_t time );
48 
54  DateTime(const DateTime& dateTime);
55 
61  DateTime(const date_t& aDatetype);
62 
75  DateTime( const std::string& time );
76 
77 
88  DateTime ( int year, int month, int day, int hour = 0, int minutes = 0, int seconds = 0 );
89 
90  ~DateTime(){};
91 
92 
98  std::string toString( ) const;
99 
108  std::string toString( const std::string& format ) const;
109 
122  DateTime convertStringToDate(const std::string& value);
123 
130  time_t toTime() const;
131 
137  int timeZoneOffset() const;
138 
142  int year () const {return m_dateTime.year;}
143 
147  int month () const {return m_dateTime.month + 1;}
151  int day () const {return m_dateTime.day;}
155  int hour () const {return m_dateTime.hour;}
159  int minute() const {return m_dateTime.minute;}
163  int second() const {return m_dateTime.second;}
164 
165  int year (int y) {return (m_dateTime . year = static_cast<short>(y));}
166  int month (int m) {return (m_dateTime . month = static_cast<byte>(m -1)) + 1;}
167  int day (int d) {return (m_dateTime . day = static_cast<byte>(d));}
168  int hour (int h) {return (m_dateTime . hour = static_cast<byte>(h));}
169  int minute(int m) {return (m_dateTime . minute = static_cast<byte>(m));}
170  int second(int s) {return (m_dateTime . second = static_cast<byte>(s));}
171 
175  operator date_t() const { return (date_t)m_dateTime;}
176 
177  bool operator ==(const DateTime& that) const;
178  bool operator !=(const DateTime& that) const {return !operator==(that);}
179 
180  bool operator >(const DateTime& that) const;
181  bool operator <(const DateTime& that) const;
182  bool operator >=(const DateTime& that) const {return !operator<(that);}
183  bool operator <=(const DateTime& that) const {return !operator>(that);}
184 
185  DateTime& operator =( const DateTime& that );
186  DateTime operator +( const DateTime& that ) const;
187  DateTime operator -( const DateTime& that ) const;
188  DateTime operator +=( const DateTime& that );
189  DateTime operator -=( const DateTime& that );
190 
195  static int getTimeZoneOffset();
196  static int getTimeZoneStandardOffset();
197  int isValid() const;
198  int isLeapYear(int nYear) const;
199 
200  DateTime& init(const DateTime& d2);
201  DateTime& init( int year, int month, int day, int hour = 0, int minutes = 0, int seconds = 0 );
202 
203 private:
204  void initStatics()const;
205  int getLocalGMTOffset( int hour, int minute) const;
206  bool isDayLight() const;
207 
208  static tm dateElementsToTm( const date_t& dateTime);
209  static date_t tmToDate( const tm& date);
210 
211  // Internal date structure, in local time
212  date_t m_dateTime;
213 
214 
215  static std::string s_NullDateString;
216  static int s_standardOffset;
217  static int s_daylightOffset;
218 
219 
220 };
221 
222 #include <base_utils/libbase_utils_undef.h>
223 #endif