mirror of
https://github.com/Relintai/pandemonium_engine.git
synced 2024-12-22 03:46:50 +01:00
Backported: - Fix DST Error on Windows (cherry picked from commit 4802f15) - ztc0611 (658877c350
)
This commit is contained in:
parent
0deed9038c
commit
40b60f3c86
@ -2377,12 +2377,19 @@ OS::Date OS_Windows::get_date(bool utc) const {
|
||||
else
|
||||
GetLocalTime(&systemtime);
|
||||
|
||||
// Get DST information from Windows, but only if utc is false.
|
||||
TIME_ZONE_INFORMATION info;
|
||||
bool daylight = false;
|
||||
if (!utc && GetTimeZoneInformation(&info) == TIME_ZONE_ID_DAYLIGHT) {
|
||||
daylight = true;
|
||||
}
|
||||
|
||||
Date date;
|
||||
date.day = systemtime.wDay;
|
||||
date.month = Month(systemtime.wMonth);
|
||||
date.weekday = Weekday(systemtime.wDayOfWeek);
|
||||
date.year = systemtime.wYear;
|
||||
date.dst = false;
|
||||
date.dst = daylight;
|
||||
return date;
|
||||
}
|
||||
OS::Time OS_Windows::get_time(bool utc) const {
|
||||
@ -2405,16 +2412,19 @@ OS::TimeZoneInfo OS_Windows::get_time_zone_info() const {
|
||||
if (GetTimeZoneInformation(&info) == TIME_ZONE_ID_DAYLIGHT)
|
||||
daylight = true;
|
||||
|
||||
// Daylight Bias needs to be added to the bias if DST is in effect, or else it will not properly update.
|
||||
TimeZoneInfo ret;
|
||||
if (daylight) {
|
||||
ret.name = info.DaylightName;
|
||||
ret.bias = info.Bias + info.DaylightBias;
|
||||
} else {
|
||||
ret.name = info.StandardName;
|
||||
ret.bias = info.Bias + info.StandardBias;
|
||||
}
|
||||
|
||||
// Bias value returned by GetTimeZoneInformation is inverted of what we expect
|
||||
// For example on GMT-3 GetTimeZoneInformation return a Bias of 180, so invert the value to get -180
|
||||
ret.bias = -info.Bias;
|
||||
// For example, on GMT-3 GetTimeZoneInformation return a Bias of 180, so invert the value to get -180
|
||||
ret.bias = -ret.bias;
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user