summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlat9nq <22451773+lat9nq@users.noreply.github.com>2023-07-12 08:34:02 +0200
committerlat9nq <22451773+lat9nq@users.noreply.github.com>2023-07-12 08:34:02 +0200
commit13755c09036aefe9209360bf0a94c3e2a83e12b8 (patch)
tree893fcca0318e4e7162f875e8f6d44d36f29ff942
parentsettings: Disable C++20 tzdb path on MinGW (diff)
downloadyuzu-13755c09036aefe9209360bf0a94c3e2a83e12b8.tar
yuzu-13755c09036aefe9209360bf0a94c3e2a83e12b8.tar.gz
yuzu-13755c09036aefe9209360bf0a94c3e2a83e12b8.tar.bz2
yuzu-13755c09036aefe9209360bf0a94c3e2a83e12b8.tar.lz
yuzu-13755c09036aefe9209360bf0a94c3e2a83e12b8.tar.xz
yuzu-13755c09036aefe9209360bf0a94c3e2a83e12b8.tar.zst
yuzu-13755c09036aefe9209360bf0a94c3e2a83e12b8.zip
-rw-r--r--src/common/time_zone.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/common/time_zone.cpp b/src/common/time_zone.cpp
index a25f8b040..1ee63bf80 100644
--- a/src/common/time_zone.cpp
+++ b/src/common/time_zone.cpp
@@ -35,11 +35,13 @@ std::string GetDefaultTimeZone() {
// Results are not comparable to seconds since Epoch
static std::time_t TmSpecToSeconds(const struct std::tm& spec) {
+ const int year = spec.tm_year - 1; // Years up to now
+ const int leap_years = year / 4 - year / 100;
std::time_t cumulative = spec.tm_year;
- cumulative = cumulative * 365 + spec.tm_yday; // Years to days
- cumulative = cumulative * 24 + spec.tm_hour; // Days to hours
- cumulative = cumulative * 60 + spec.tm_min; // Hours to minutes
- cumulative = cumulative * 60 + spec.tm_sec; // Minutes to seconds
+ cumulative = cumulative * 365 + leap_years + spec.tm_yday; // Years to days
+ cumulative = cumulative * 24 + spec.tm_hour; // Days to hours
+ cumulative = cumulative * 60 + spec.tm_min; // Hours to minutes
+ cumulative = cumulative * 60 + spec.tm_sec; // Minutes to seconds
return cumulative;
}