From 53b641d4b3dd646fe70e5d384e87183dc72b0172 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sa=C3=BAl=20Ibarra=20Corretg=C3=A9?= Date: Mon, 9 Dec 2024 22:32:32 +0100 Subject: [PATCH] Fixes timezone bias on Windows `GetTimeZoneInformation`returns the bias in minutes already, so no need to adjust it. Also handle the return code since it determines if the time zone is in the daylight saving range. Ref: https://learn.microsoft.com/en-us/windows/win32/api/timezoneapi/nf-timezoneapi-gettimezoneinformation Fixes: https://github.com/saghul/txiki.js/issues/325 --- quickjs.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/quickjs.c b/quickjs.c index 4d56ede..29beb4b 100644 --- a/quickjs.c +++ b/quickjs.c @@ -43386,9 +43386,14 @@ static const JSCFunctionListEntry js_math_obj[] = { between UTC time and local time 'd' in minutes */ static int getTimezoneOffset(int64_t time) { #if defined(_WIN32) - TIME_ZONE_INFORMATION time_zone_info; - GetTimeZoneInformation(&time_zone_info); - return (int)time_zone_info.Bias / 60; + DWORD r; + TIME_ZONE_INFORMATION t; + r = GetTimeZoneInformation(&t); + if (r == TIME_ZONE_ID_INVALID) + return 0; + if (r == TIME_ZONE_ID_DAYLIGHT) + return (int)(t.Bias + t.DaylightBias); + return (int)t.Bias; #else time_t ti; struct tm tm;