aboutsummaryrefslogtreecommitdiff
path: root/src/common/Utilities
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/Utilities')
-rw-r--r--src/common/Utilities/Util.cpp22
-rw-r--r--src/common/Utilities/Util.h2
2 files changed, 24 insertions, 0 deletions
diff --git a/src/common/Utilities/Util.cpp b/src/common/Utilities/Util.cpp
index 53365373eb4..3b9917611aa 100644
--- a/src/common/Utilities/Util.cpp
+++ b/src/common/Utilities/Util.cpp
@@ -77,6 +77,13 @@ struct tm* localtime_r(time_t const* time, struct tm *result)
}
#endif
+tm TimeBreakdown(time_t time)
+{
+ tm timeLocal;
+ localtime_r(&time, &timeLocal);
+ return timeLocal;
+}
+
time_t LocalTimeToUTCTime(time_t time)
{
#if (defined(WIN32) || defined(_WIN32) || defined(__WIN32__))
@@ -86,6 +93,21 @@ time_t LocalTimeToUTCTime(time_t time)
#endif
}
+time_t GetLocalHourTimestamp(time_t time, uint8 hour, bool onlyAfterTime)
+{
+ tm timeLocal = TimeBreakdown(time);
+ timeLocal.tm_hour = 0;
+ timeLocal.tm_min = 0;
+ timeLocal.tm_sec = 0;
+ time_t midnightLocal = mktime(&timeLocal);
+ time_t hourLocal = midnightLocal + hour * HOUR;
+
+ if (onlyAfterTime && hourLocal < time)
+ hourLocal += DAY;
+
+ return hourLocal;
+}
+
std::string secsToTimeString(uint64 timeInSecs, bool shortText, bool hoursOnly)
{
uint64 secs = timeInSecs % MINUTE;
diff --git a/src/common/Utilities/Util.h b/src/common/Utilities/Util.h
index 193981e31ae..125442865c5 100644
--- a/src/common/Utilities/Util.h
+++ b/src/common/Utilities/Util.h
@@ -59,6 +59,8 @@ TC_COMMON_API int32 MoneyStringToMoney(std::string const& moneyString);
TC_COMMON_API struct tm* localtime_r(time_t const* time, struct tm *result);
TC_COMMON_API time_t LocalTimeToUTCTime(time_t time);
+TC_COMMON_API time_t GetLocalHourTimestamp(time_t time, uint8 hour, bool onlyAfterTime = true);
+TC_COMMON_API tm TimeBreakdown(time_t t);
TC_COMMON_API std::string secsToTimeString(uint64 timeInSecs, bool shortText = false, bool hoursOnly = false);
TC_COMMON_API uint32 TimeStringToSecs(std::string const& timestring);