DateTime.h
Go to the documentation of this file.
1#pragma once
2
3
4#include <cstdint>
5#include <ostream>
6#include <string>
7
10
11namespace IceUtil
12{
13 class Time;
14}
15
16namespace armarx::core::time
17{
18
19 /**
20 * @brief Represents a point in time.
21 *
22 * API and implementation to match IceUtil::Time (where applicable).
23 */
25 {
26
27 public:
28 DateTime();
29
30 DateTime(Duration timeSinceEpoch,
32 const std::string& hostname = "unknown");
33
34 DateTime(std::int64_t microSecondsSinceEpoch,
36 const std::string& hostname = "unknown");
37
38 static DateTime Now();
39 static DateTime Invalid();
40
41 std::string toDateString() const;
42
43 std::string toTimeString() const;
44
45 std::string toDateTimeString() const;
46
47 /**
48 * @brief String representation of current date time according to given format string.
49 *
50 * The format is according to https://en.cppreference.com/w/cpp/chrono/c/strftime. For
51 * milli seconds and micro seconds, special specifiers "%%msec" and "%%usec" were added
52 * respectively.
53 *
54 * Example format string for "2022-03-04_16-59-10.981789": "%Y-%m-%d_%H-%M-%S.%%usec".
55 *
56 * @param format Format string.
57 * @return Formatted date time.
58 */
59 std::string toString(const std::string& format) const;
60
61 std::int64_t toMicroSecondsSinceEpoch() const;
62
63 std::int64_t toMilliSecondsSinceEpoch() const;
64
65 std::int64_t toSecondsSinceEpoch() const;
66
68
69 ClockType clockType() const;
70
71 std::string hostname() const;
72
73 bool isValid() const;
74 bool isInvalid() const;
75
76
77 // DEPRECATED IceUtil::Time-style API.
78 [[deprecated("Using IceUtil::Time in ArmarX is deprecated. Use armarx::DateTime "
79 "instead.")]] DateTime(const IceUtil::Time& ice);
80
81 [[deprecated("Using IceUtil::Time in ArmarX is deprecated. Use armarx::DateTime instead.")]]
82 operator IceUtil::Time() const;
83
84 // IceUtil::Time-compatible legacy API.
85 [[deprecated("The IceUtil::Time-style API is deprecated. Use DateTime::Now() "
86 "instead.")]] static DateTime
88 {
89 return Now();
90 }
91
92 [[deprecated("The IceUtil::Time-style API is deprecated. Use "
93 "DateTime(Duration::MicroSeconds(...)) instead.")]] static DateTime
98
99 [[deprecated("The IceUtil::Time-style API is deprecated. Use toMicroSecondsSinceEpoch() "
100 "instead.")]] std::int64_t
102 {
104 }
105
106 // Operators.
107 public:
108 DateTime operator+(const Duration& rhs) const;
109
110 DateTime& operator+=(const Duration& rhs);
111
112 DateTime operator-(const Duration& rhs) const;
113
114 DateTime& operator-=(const Duration& rhs);
115
116 Duration operator-(const DateTime& rhs) const;
117
118 bool operator<(const DateTime& rhs) const;
119
120 bool operator<=(const DateTime& rhs) const;
121
122 bool operator==(const DateTime& rhs) const;
123
124 bool operator>(const DateTime& rhs) const;
125
126 bool operator>=(const DateTime& rhs) const;
127
128 bool operator!=(const DateTime& rhs) const;
129
130 protected:
132
134
136
137 std::string _hostname;
138 };
139
140 std::ostream& operator<<(std::ostream& out, const DateTime& rhs);
141
142} // namespace armarx::core::time
143
144namespace armarx
145{
147} // namespace armarx
Represents a point in time.
Definition DateTime.h:25
std::int64_t toSecondsSinceEpoch() const
Definition DateTime.cpp:99
static DateTime Now()
Definition DateTime.cpp:51
bool operator!=(const DateTime &rhs) const
Definition DateTime.cpp:197
static const Duration _invalidTimeSinceEpoch
Definition DateTime.h:131
static DateTime now()
Definition DateTime.h:87
bool operator<=(const DateTime &rhs) const
Definition DateTime.cpp:173
bool operator<(const DateTime &rhs) const
Definition DateTime.cpp:167
DateTime & operator+=(const Duration &rhs)
Definition DateTime.cpp:141
std::string toTimeString() const
Definition DateTime.cpp:69
bool operator>(const DateTime &rhs) const
Definition DateTime.cpp:185
std::string toDateTimeString() const
Definition DateTime.cpp:75
DateTime & operator-=(const Duration &rhs)
Definition DateTime.cpp:154
DateTime operator+(const Duration &rhs) const
Definition DateTime.cpp:135
std::string toString(const std::string &format) const
String representation of current date time according to given format string.
Definition DateTime.cpp:81
static DateTime microSeconds(long microSeconds)
Definition DateTime.h:94
std::int64_t toMicroSeconds() const
Definition DateTime.h:101
std::int64_t toMilliSecondsSinceEpoch() const
Definition DateTime.cpp:93
std::string toDateString() const
Definition DateTime.cpp:63
bool operator==(const DateTime &rhs) const
Definition DateTime.cpp:179
static DateTime Invalid()
Definition DateTime.cpp:57
std::string hostname() const
Definition DateTime.cpp:117
Duration toDurationSinceEpoch() const
Definition DateTime.cpp:105
DateTime operator-(const Duration &rhs) const
Definition DateTime.cpp:148
bool operator>=(const DateTime &rhs) const
Definition DateTime.cpp:191
ClockType clockType() const
Definition DateTime.cpp:111
std::int64_t toMicroSecondsSinceEpoch() const
Definition DateTime.cpp:87
Represents a duration.
Definition Duration.h:17
static Duration MicroSeconds(std::int64_t microSeconds)
Constructs a duration in microseconds.
Definition Duration.cpp:24
armarx::core::time::DateTime Time
std::ostream & operator<<(std::ostream &out, const DateTime &rhs)
Definition DateTime.cpp:203
ClockType
Describes the type of clock.
Definition ClockType.h:10
@ Virtual
Time given by time server if configured, realtime otherwise.
Definition ClockType.h:16
This file offers overloads of toIce() and fromIce() functions for STL container types.