From 8930d44f5d1ed9a16178da39f4ede337ee4760b2 Mon Sep 17 00:00:00 2001 From: wheremyfoodat <44909372+wheremyfoodat@users.noreply.github.com> Date: Sun, 2 Jul 2023 01:00:57 +0300 Subject: [PATCH] Proper daylight savings time check --- src/core/memory.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/core/memory.cpp b/src/core/memory.cpp index 9318c627..dfa155a2 100644 --- a/src/core/memory.cpp +++ b/src/core/memory.cpp @@ -428,7 +428,7 @@ u64 Memory::timeSince3DSEpoch() { std::time_t rawTime = std::time(nullptr); // Get current UTC time auto localTime = std::localtime(&rawTime); // Convert to local time - bool daylightSavings = localTime->tm_isdst; // Get if time includes DST + bool daylightSavings = localTime->tm_isdst > 0; // Get if time includes DST localTime = std::gmtime(&rawTime); // Use gmtime + mktime to calculate difference between local time and UTC @@ -437,7 +437,8 @@ u64 Memory::timeSince3DSEpoch() { timezoneDifference += 60ull * 60ull; // Add 1 hour (60 seconds * 60 minutes) } - milliseconds ms = duration_cast(seconds(rawTime + timezoneDifference)); - constexpr u64 offset = 2208988800ull * 1000; - return ms.count() + offset; + // seconds between Jan 1 1900 and Jan 1 1970 + constexpr u64 offset = 2208988800ull; + milliseconds ms = duration_cast(seconds(rawTime + timezoneDifference + offset)); + return ms.count(); } \ No newline at end of file