From f7c817efcf23525b0277a5e394c435d76cc924e3 Mon Sep 17 00:00:00 2001 From: Yonggang Luo Date: Tue, 9 Feb 2021 14:23:28 +0000 Subject: [PATCH] Take care of year before 1601 on win32. (#4580) JerryScript-DCO-1.0-Signed-off-by: Yonggang Luo luoyonggang@gmail.com --- jerry-port/default/default-date.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/jerry-port/default/default-date.c b/jerry-port/default/default-date.c index 57ce68759..7ff3f5d7d 100644 --- a/jerry-port/default/default-date.c +++ b/jerry-port/default/default-date.c @@ -65,6 +65,12 @@ double jerry_port_get_local_time_zone_adjustment (double unix_ms, /**< ms since ULARGE_INTEGER time, localTime; UnixTimeMsToFileTime (unix_ms, &fileTime); + /* If time is earlier than year 1601, then always using year 1601 to query time zone adjustment */ + if (fileTime.dwHighDateTime >= 0x80000000) + { + fileTime.dwHighDateTime = 0; + fileTime.dwLowDateTime = 0; + } if (FileTimeToSystemTime (&fileTime, &systemTime) && SystemTimeToTzSpecificLocalTime (0, &systemTime, &localSystemTime) @@ -76,6 +82,7 @@ double jerry_port_get_local_time_zone_adjustment (double unix_ms, /**< ms since localTime.HighPart = localFileTime.dwHighDateTime; return (double) (((LONGLONG) localTime.QuadPart - (LONGLONG) time.QuadPart) / TicksPerMs); } + return 0.0; #elif defined (__GNUC__) || defined (__clang__) time_t now_time = (time_t) (unix_ms / 1000); double tza_s = 0.0;