浏览代码

Merge pull request #59223 from ztc0611/master

Rémi Verschelde 3 年之前
父节点
当前提交
5d806b435b
共有 1 个文件被更改,包括 12 次插入2 次删除
  1. 12 2
      platform/windows/os_windows.cpp

+ 12 - 2
platform/windows/os_windows.cpp

@@ -264,12 +264,19 @@ OS::Date OS_Windows::get_date(bool p_utc) const {
 		GetLocalTime(&systemtime);
 	}
 
+	//Get DST information from Windows, but only if p_utc is false.
+	TIME_ZONE_INFORMATION info;
+	bool daylight = false;
+	if (!p_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;
 }
 
@@ -295,16 +302,19 @@ OS::TimeZoneInfo OS_Windows::get_time_zone_info() const {
 		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;
+	ret.bias = -ret.bias;
 	return ret;
 }