USING: calendar namespaces alien.c-types system windows.kernel32 kernel math combinators windows.errors accessors classes.struct calendar.format math.functions ; IN: calendar.windows M: windows gmt-offset ( -- hours minutes seconds ) TIME_ZONE_INFORMATION dup GetTimeZoneInformation { { TIME_ZONE_ID_INVALID [ win32-error-string throw ] } { TIME_ZONE_ID_UNKNOWN [ Bias>> ] } { TIME_ZONE_ID_STANDARD [ Bias>> ] } { TIME_ZONE_ID_DAYLIGHT [ [ Bias>> ] [ DaylightBias>> ] bi + ] } } case neg 60 /mod 0 ; : timestamp>SYSTEMTIME ( timestamp -- SYSTEMTIME ) { [ year>> ] [ month>> ] [ day-of-week ] [ day>> ] [ hour>> ] [ minute>> ] [ second>> dup floor [ nip >integer ] [ - 1000 * >integer ] 2bi ] } cleave \ SYSTEMTIME ; : SYSTEMTIME>timestamp ( SYSTEMTIME -- timestamp ) { [ wYear>> ] [ wMonth>> ] [ wDay>> ] [ wHour>> ] [ wMinute>> ] [ [ wSecond>> ] [ wMilliseconds>> 1000 /f ] bi + ] } cleave gmt-offset-duration ;