aboutsummaryrefslogtreecommitdiff
path: root/src/common/time_zone.cpp
diff options
context:
space:
mode:
authorKelebek1 <eeeedddccc@hotmail.co.uk>2023-10-29 13:50:55 +0000
committerKelebek1 <eeeedddccc@hotmail.co.uk>2024-01-24 04:26:55 +0000
commit52c35521bdd8fc66f95ba0c7fc92bd21e1511582 (patch)
tree1783055dc2e98eaf9099e8e7b194b55f8f607747 /src/common/time_zone.cpp
parente0763174c609affa289f22c0fcbf35e637e2f64e (diff)
Rework time service to fix time passing offline.
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 69e728a9df..f77df604f4 100644
--- a/src/common/time_zone.cpp
+++ b/src/common/time_zone.cpp
@@ -88,7 +88,17 @@ std::string FindSystemTimeZone() {
LOG_ERROR(Common, "Time zone {} not handled, defaulting to hour offset.", tz_index);
}
}
- return fmt::format("Etc/GMT{:s}{:d}", hours > 0 ? "-" : "+", std::abs(hours));
+
+ // For some reason the Etc/GMT times are reversed. GMT+6 contains -21600 as its offset,
+ // -6 hours instead of +6 hours, so these signs are purposefully reversed to fix it.
+ std::string postfix{""};
+ if (hours > 0) {
+ postfix = fmt::format("-{:d}", std::abs(hours));
+ } else if (hours < 0) {
+ postfix = fmt::format("+{:d}", std::abs(hours));
+ }
+
+ return fmt::format("Etc/GMT{:s}", postfix);
}
} // namespace Common::TimeZone