19 #include <util/Converter.h> 21 #include <OnixS/Core/Time/DateTime.h> 22 #include <OnixS/Core/Time/Operators.h> 23 #include <OnixS/Core/Time/Service.h> 25 #include <OnixS/HandlerCore/TimeHelper.h> 29 #include "NamespaceHelper.h" 33 using OnixS::HandlerCore::Common::TimeHelper;
35 ONIXS_HANDLER_NAMESPACE_BEGIN
41 convert(
const Timestamp& time)
44 OnixS::Time::DateTime(
45 OnixS::Time::TimeSpan(time.sinceEpoch().totalSeconds(),
46 OnixS::Time::NanosecondSubseconds(time.sinceEpoch().nanoseconds())));
51 Timestamp::Timestamp()
53 *
this = TimeHelper::convert<Timestamp>(
54 OnixS::Time::DateTime::epoch());
58 unsigned int year,
Month::Enum month,
unsigned int day,
59 unsigned int hour,
unsigned int minute,
unsigned int second,
60 unsigned int nanosecond) :
63 *
this = TimeHelper::convert<Timestamp>(
64 OnixS::Time::DateTime(
66 static_cast<OnixS::Time::Month>(month),
71 OnixS::Time::NanosecondSubsecond(nanosecond)));
77 return convert(*this).year();
84 convert(*this).month());
90 return convert(*this).day();
96 OnixS::Time::YearMonthDay impl;
97 convert(*this).getDate(impl);
107 return convert(*this).hour();
113 return convert(*this).minute();
119 return convert(*this).second();
126 return convert(*
this) ==
134 return convert(*
this) !=
142 return convert(*
this) <
152 OnixS::Time::DateTime
153 dateTime = convert(*
this);
158 OnixS::Time::YYYYMMDDFormatter()(dateTime, str);
162 OnixS::Time::YYYYMMDDHHMMSSFormatter()(dateTime, str);
166 OnixS::Time::YYYYMMDDHHMMSSmsecFormatter()(dateTime, str);
170 OnixS::Time::YYYYMMDDHHMMSSnsecFormatter()(dateTime, str);
178 return TimeHelper::convert<Timestamp>(
179 OnixS::Time::Accurate::utcNow());
185 return TimeHelper::convert<Timestamp>(
186 OnixS::Time::Accurate::now());
191 const std::string &str,
194 bool succeeded =
false;
195 OnixS::Time::DateTime dateTime;
202 OnixS::Time::YYYYMMDDFormatter()(
203 str.data(), str.size(), dateTime);
210 OnixS::Time::YYYYMMDDHHMMSSFormatter()(
211 str.data(), str.size(), dateTime);
218 OnixS::Time::YYYYMMDDHHMMSSmsecFormatter()(
219 str.data(), str.size(), dateTime);
226 OnixS::Time::YYYYMMDDHHMMSSnsecFormatter()(
227 str.data(), str.size(), dateTime);
233 return TimeHelper::convert<Timestamp>(dateTime);
235 std::string exceptionReason;
237 exceptionReason +=
"Cannot parse timestamp [str=";
238 exceptionReason += str;
239 exceptionReason +=
"]. ";
241 throw OnixS::DomainException(exceptionReason);
246 unsigned long long numericPresentation,
253 const unsigned int day =
static_cast<unsigned int>((numericPresentation) % 100);
257 const unsigned int year =
static_cast<unsigned int>(numericPresentation / 100);
269 std::string exceptionReason;
271 exceptionReason +=
"Cannot parse timestamp [str=";
272 exceptionReason += i2str(numericPresentation);
273 exceptionReason +=
"]. ";
275 throw OnixS::DomainException(exceptionReason);
281 return TimeHelper::convert<Timestamp>(OnixS::Time::DateTime::epoch());
286 ONIXS_HANDLER_NAMESPACE_END
unsigned int minute() const
unsigned int hour() const
Represents timestamp without time-zone information.
unsigned int second() const
void date(YearMonthDay &) const
Returns date part of timestamp.
std::string toString(TimestampFormat::Enum=TimestampFormat::YYYYMMDDHHMMSSNsec) const
Enum
Defines all the months in the year.
bool operator<(const Timestamp &) const
Tests whether instance is less than another one.
Month::Enum month() const
Month component of timestamp.
bool operator!=(const Timestamp &) const
Compares instance with another one.
static Timestamp parse(const std::string &, TimestampFormat::Enum=TimestampFormat::YYYYMMDDHHMMSSNsec)
bool operator==(const Timestamp &) const
Compares instance with another one.
Timestamp()
Initializes as Jan 1, 0001, 00:00:00.
unsigned year() const
Year component of timestamp.
static Timestamp utcNow()
static Timestamp epoch()
Epoch.