Core/Calendar: Implement different timezone support for ingame calendar

Closes #8390
Closes #29427
This commit is contained in:
Shauren
2023-11-21 12:25:22 +01:00
parent 8c072b93af
commit b888b1b09f
47 changed files with 1182 additions and 456 deletions

View File

@@ -58,9 +58,20 @@ std::vector<std::string_view> Trinity::Tokenize(std::string_view str, char sep,
#if (defined(WIN32) || defined(_WIN32) || defined(__WIN32__))
struct tm* localtime_r(time_t const* time, struct tm *result)
{
localtime_s(result, time);
if (localtime_s(result, time) != 0)
return nullptr;
return result;
}
struct tm* gmtime_r(time_t const* time, struct tm* result)
{
if (gmtime_s(result, time) != 0)
return nullptr;
return result;
}
time_t timegm(struct tm* tm)
{
return _mkgmtime(tm);
}
#endif
tm TimeBreakdown(time_t time)
@@ -70,17 +81,6 @@ tm TimeBreakdown(time_t time)
return timeLocal;
}
time_t LocalTimeToUTCTime(time_t time)
{
#if (defined(WIN32) || defined(_WIN32) || defined(__WIN32__))
return time + _timezone;
#elif defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
return timegm(gmtime(&time));
#else
return time + timezone;
#endif
}
time_t GetLocalHourTimestamp(time_t time, uint8 hour, bool onlyAfterTime)
{
tm timeLocal = TimeBreakdown(time);