ARC SDK
DateTime.h
1 // -*- indent-tabs-mode: nil -*-
2 
3 #ifndef ARCLIB_TIME
4 #define ARCLIB_TIME
5 
6 #include <stdint.h>
7 #include <sigc++/slot.h>
8 
9 #include <ctime>
10 #include <iostream>
11 #include <string>
12 
13 namespace Arc {
14 
18  enum TimeFormat {
29  };
30 
32  enum PeriodBase {
41  };
42 
44 
48  class Period {
49  public:
51  Period();
52 
54  Period(time_t);
55 
57  Period(time_t seconds, uint32_t nanoseconds);
58 
60  Period(const std::string&, PeriodBase base = PeriodSeconds);
61 
63  Period& operator=(time_t);
64 
66  Period& operator=(const Period&);
67 
69  void SetPeriod(time_t sec);
71  void SetPeriod(time_t sec, uint32_t nanosec);
72 
74  time_t GetPeriod() const;
76  uint32_t GetPeriodNanoseconds() const;
77 
79  const sigc::slot<const char*>* istr() const;
80 
82  operator std::string() const;
83 
85  bool operator<(const Period&) const;
86 
88  bool operator>(const Period&) const;
89 
91  bool operator<=(const Period&) const;
92 
94  bool operator>=(const Period&) const;
95 
97  bool operator==(const Period&) const;
98 
100  bool operator!=(const Period&) const;
101 
102  Period& operator+=(const Period&);
103 
104  private:
106  time_t seconds;
107  uint32_t nanoseconds;
108 
110  const char* IStr() const;
111  sigc::slot<const char*> slot;
112  std::string is;
113  };
114 
116  std::ostream& operator<<(std::ostream&, const Period&);
117 
118 
119 
121 
125  class Time {
126  public:
128  Time();
129 
131  Time(time_t);
132 
134  Time(time_t time, uint32_t nanosec);
135 
137  Time(const std::string&);
138 
140  Time& operator=(time_t);
141 
143  Time& operator=(const Time&);
144 
146  Time& operator=(const char*);
147 
149  Time& operator=(const std::string&);
150 
152  void SetTime(time_t);
153 
155  void SetTime(time_t time, uint32_t nanosec);
156 
158  time_t GetTime() const;
160  uint32_t GetTimeNanoseconds() const;
161 
163  operator std::string() const;
164 
166  std::string str(const TimeFormat& = time_format) const;
167 
169  static void SetFormat(const TimeFormat&);
170 
172  static TimeFormat GetFormat();
173 
175  bool operator<(const Time&) const;
176 
178  bool operator>(const Time&) const;
179 
181  bool operator<=(const Time&) const;
182 
184  bool operator>=(const Time&) const;
185 
187  bool operator==(const Time&) const;
188 
190  bool operator!=(const Time&) const;
191 
193  Time operator+(const Period&) const;
194 
196  Time operator-(const Period&) const;
197 
199  Period operator-(const Time&) const;
200 
202  static const int YEAR = 31536000;
204  static const int MONTH = 2592000;
206  static const int WEEK = 604800;
208  static const int DAY = 86400;
210  static const int HOUR = 3600;
212  static const time_t UNDEFINED = (time_t)(-1);
213 
214  private:
216  time_t gtime;
217 
219  uint32_t gnano;
220 
222  static TimeFormat time_format;
223  };
224 
226  std::ostream& operator<<(std::ostream&, const Time&);
227 
229  std::string TimeStamp(const TimeFormat& = Time::GetFormat());
230 
232  std::string TimeStamp(Time, const TimeFormat& = Time::GetFormat());
233 
235 } // namespace Arc
236 
237 #endif // ARCLIB_TIME
Arc namespace contains all core ARC classes.
Definition: ArcConfig.h:11
bool operator>=(const Period &) const
Comparing two Period objects.
std::string str(const TimeFormat &=time_format) const
Returns a string representation of the time, using the specified format.
Weeks.
Definition: DateTime.h:40
Period & operator=(time_t)
Assignment operator from a time_t.
Day, DD Mon YYYY HH:MM:SS GMT.
Definition: DateTime.h:25
static const int MONTH
Number of seconds in 30 days.
Definition: DateTime.h:204
Microseconds.
Definition: DateTime.h:34
void SetTime(time_t)
Sets the time.
Hours.
Definition: DateTime.h:38
static const int WEEK
Number of seconds in a week.
Definition: DateTime.h:206
bool operator>=(const Time &) const
Comparing two Time objects.
static const int YEAR
Number of seconds in a year (365 days)
Definition: DateTime.h:202
uint32_t GetPeriodNanoseconds() const
Gets the number of nanoseconds after the last whole second.
Time()
Default constructor. The time is put equal the current time.
Nanoseconds.
Definition: DateTime.h:33
bool operator>(const Time &) const
Comparing two Time objects.
YYYY-MM-DDTHH:MM:SS+HH:MM.
Definition: DateTime.h:23
A class for storing and manipulating times.
Definition: DateTime.h:125
bool operator==(const Time &) const
Comparing two Time objects.
Seconds.
Definition: DateTime.h:36
Period()
Default constructor. The period is set to 0 length.
Minutes.
Definition: DateTime.h:37
bool operator>(const Period &) const
Comparing two Period objects.
bool operator<(const Period &) const
Comparing two Period objects.
bool operator==(const Period &) const
Comparing two Period objects.
Time operator+(const Period &) const
Adding Time object with Period object.
static const int HOUR
Number of seconds in an hour.
Definition: DateTime.h:210
static TimeFormat GetFormat()
Gets the default format for time strings.
YYYY-MM-DD HH:MM:SS.mmmmmm (microseconds resolution)
Definition: DateTime.h:27
time_t GetTime() const
Gets the time in seconds.
Day Mon DD HH:MM:SS YYYY.
Definition: DateTime.h:21
YYYY-MM-DD HH:MM:SS.mmm (milliseconds resolution, suitable for Elasticsearch)
Definition: DateTime.h:28
TimeFormat
An enumeration that contains the possible textual time formats.
Definition: DateTime.h:19
const sigc::slot< const char * > * istr() const
For use with IString.
bool operator<=(const Time &) const
Comparing two Time objects.
static const time_t UNDEFINED
Undefined time.
Definition: DateTime.h:212
YYYYMMDDHHMMSSZ.
Definition: DateTime.h:20
1234567890
Definition: DateTime.h:26
std::ostream & operator<<(std::ostream &, const Period &)
Prints a Period-object to the given ostream – typically cout.
std::string TimeStamp(const TimeFormat &=Time::GetFormat())
Returns a time-stamp of the current time in some format.
static const int DAY
Number of seconds in a day.
Definition: DateTime.h:208
YYYY-MM-DDTHH:MM:SSZ.
Definition: DateTime.h:24
A Period represents a length of time.
Definition: DateTime.h:48
YYYY-MM-DD HH:MM:SS.
Definition: DateTime.h:22
bool operator<(const Time &) const
Comparing two Time objects.
Days.
Definition: DateTime.h:39
Milliseconds.
Definition: DateTime.h:35
uint32_t GetTimeNanoseconds() const
Gets the nanoseconds fraction of the time.
Time operator-(const Period &) const
Subtracting Period object from Time object.
PeriodBase
Base to use when constructing a new Period.
Definition: DateTime.h:32
void SetPeriod(time_t sec)
Sets the period in seconds.
Time & operator=(time_t)
Assignment operator from a time_t.
bool operator<=(const Period &) const
Comparing two Period objects.
static void SetFormat(const TimeFormat &)
Sets the default format for time strings.
time_t GetPeriod() const
Gets the period in seconds.
bool operator!=(const Time &) const
Comparing two Time objects.
bool operator!=(const Period &) const
Comparing two Period objects.