From 8c09772802d96aad22f53dba1c2f466fb552effd Mon Sep 17 00:00:00 2001 From: Martchus Date: Sun, 21 Jun 2015 21:41:56 +0200 Subject: [PATCH] added new method to construct DateTime instance from timestamp --- chrono/datetime.cpp | 22 +++++++++++----------- chrono/datetime.h | 1 + 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/chrono/datetime.cpp b/chrono/datetime.cpp index ddc4a52..3f1e4ce 100644 --- a/chrono/datetime.cpp +++ b/chrono/datetime.cpp @@ -44,6 +44,16 @@ inline bool inRangeExclMax(num1 val, num2 min, num3 max) * be added by leap seconds). */ +/*! + * \brief Constructs a new DateTime object from the specified \a timeStamp. + */ +DateTime DateTime::fromTimeStamp(time_t timeStamp) +{ + struct tm *timeinfo = localtime(&timeStamp); + return DateTime::fromDateAndTime(timeinfo->tm_year + 1900, timeinfo->tm_mon + 1, timeinfo->tm_mday, + timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec < 60 ? timeinfo->tm_sec : 59, 0); +} + /*! * Parses the given std::string \a str as DateTime. */ @@ -164,17 +174,7 @@ const char *DateTime::printDayOfWeek(DayOfWeek dayOfWeek, bool abbreviation) */ DateTime DateTime::now() { - time_t rawtime; - struct tm *timeinfo; - time(&rawtime); - timeinfo = localtime(&rawtime); - return DateTime::fromDateAndTime( - timeinfo->tm_year + 1900, - timeinfo->tm_mon + 1, - timeinfo->tm_mday, - timeinfo->tm_hour, - timeinfo->tm_min, - timeinfo->tm_sec < 60 ? timeinfo->tm_sec : 59); + return DateTime(time(nullptr)); } /*! diff --git a/chrono/datetime.h b/chrono/datetime.h index 0a93ca9..053f9c5 100644 --- a/chrono/datetime.h +++ b/chrono/datetime.h @@ -62,6 +62,7 @@ public: static DateTime fromTime(int hour = 0, int minute = 0, int second = 0, double millisecond = 0.0); static DateTime fromDateAndTime(int year = 1, int month = 1, int day = 1, int hour = 0, int minute = 0, int second = 0, double millisecond = 0.0); static DateTime fromString(const std::string &str); + static DateTime fromTimeStamp(time_t timestamp); constexpr uint64 totalTicks() const; int year() const;