summaryrefslogtreecommitdiff
path: root/src/common/time_zone.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/time_zone.cpp')
-rw-r--r--src/common/time_zone.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/common/time_zone.cpp b/src/common/time_zone.cpp
index 69e728a9d..f77df604f 100644
--- a/src/common/time_zone.cpp
+++ b/src/common/time_zone.cpp
@@ -88,7 +88,17 @@ std::string FindSystemTimeZone() {
88 LOG_ERROR(Common, "Time zone {} not handled, defaulting to hour offset.", tz_index); 88 LOG_ERROR(Common, "Time zone {} not handled, defaulting to hour offset.", tz_index);
89 } 89 }
90 } 90 }
91 return fmt::format("Etc/GMT{:s}{:d}", hours > 0 ? "-" : "+", std::abs(hours)); 91
92 // For some reason the Etc/GMT times are reversed. GMT+6 contains -21600 as its offset,
93 // -6 hours instead of +6 hours, so these signs are purposefully reversed to fix it.
94 std::string postfix{""};
95 if (hours > 0) {
96 postfix = fmt::format("-{:d}", std::abs(hours));
97 } else if (hours < 0) {
98 postfix = fmt::format("+{:d}", std::abs(hours));
99 }
100
101 return fmt::format("Etc/GMT{:s}", postfix);
92} 102}
93 103
94} // namespace Common::TimeZone 104} // namespace Common::TimeZone