13#if defined(DUK_USE_DATE_NOW_WINDOWS) || defined(DUK_USE_DATE_TZO_WINDOWS)
15DUK_LOCAL void duk__convert_systime_to_ularge(
const SYSTEMTIME *st, ULARGE_INTEGER *res) {
17 if (SystemTimeToFileTime(st, &ft) == 0) {
21 res->LowPart = ft.dwLowDateTime;
22 res->HighPart = ft.dwHighDateTime;
25DUK_LOCAL void duk__set_systime_jan1970(SYSTEMTIME *st) {
38#ifdef DUK_USE_DATE_NOW_WINDOWS
44 ULARGE_INTEGER tmp1, tmp2;
49 duk__convert_systime_to_ularge((
const SYSTEMTIME *) &st1, &tmp1);
51 duk__set_systime_jan1970(&st2);
52 duk__convert_systime_to_ularge((
const SYSTEMTIME *) &st2, &tmp2);
55 return (
duk_double_t) ((tmp1.QuadPart - tmp2.QuadPart) / 10000LL);
60#if defined(DUK_USE_DATE_TZO_WINDOWS)
81 duk__set_systime_jan1970(&st1);
82 duk__convert_systime_to_ularge((
const SYSTEMTIME *) &st1, &tmp1);
83 tmp2.QuadPart = (ULONGLONG) (d * 10000.0);
84 tmp2.QuadPart += tmp1.QuadPart;
86 ft1.dwLowDateTime = tmp2.LowPart;
87 ft1.dwHighDateTime = tmp2.HighPart;
88 FileTimeToSystemTime((
const FILETIME *) &ft1, &st2);
89 if (SystemTimeToTzSpecificLocalTime((LPTIME_ZONE_INFORMATION)
NULL, &st2, &st3) == 0) {
90 DUK_D(
DUK_DPRINT(
"SystemTimeToTzSpecificLocalTime() failed, return tzoffset 0"));
93 duk__convert_systime_to_ularge((
const SYSTEMTIME *) &st3, &tmp3);
96 return (
duk_int_t) (((LONGLONG) tmp3.QuadPart - (LONGLONG) tmp2.QuadPart) / 10000000LL);
#define DUK_INTERNAL_DECL
duk_int_fast32_t duk_int_t
#define DUK_MEMZERO(p, n)