program STD_TIME { Written for Delphi 3 : DCC32 -cc } ; { I have only been able to test this in the UK, during winter time. Scan windows.pas for TTimeZoneInformation, see Win32 Help via index for TIME_ZONE_INFORMATION. I suspect an error in Win32 Help, since the transition times look as if in Local not GMT; and in the data, as UK/EU changes are both at 0100h GMT. Redirect output to temporary BAT file, and execute. Needs Win32. } uses Windows, SysUtils ; function ItIs(const T : TDateTime) : string ; var Yr, Mo, Dy, H, M, S, C : word ; begin DecodeDate(T, Yr, Mo, Dy) ; DecodeTime(T, H, M, S, C) ; Result := Format('%d-%2.2d-%2.2dT%2.2d:%2.2d:%2.2d', [Yr, Mo, Dy, H, M, S]) end {ItIs} ; const TZID : array [0..2] of string [21] = ('TIME_ZONE_ID_UNKNOWN', 'TIME_ZONE_ID_STANDARD', 'TIME_ZONE_ID_DAYLIGHT') ; var GTZI : cardinal ; TZI : TTimeZoneInformation ; CMJD, MJD, time_t : integer ; T : TDateTime ; BEGIN ; Writeln(':: STD_TIME (c) www.merlyn.demon.co.uk >= 2005-02-27', ' See Win32 Help') ; GTZI := GetTimeZoneInformation(TZI) ; Write(':: According to Windows: GTZI = ', GTZI, ' => ') ; if GTZI=TIME_ZONE_ID_INVALID then Writeln('TIME_ZONE_ID_INVALID.') else with TZI do begin Writeln(TZID[GTZI]) ; T := Now ; Writeln(':: "Now" = ', ItIs(T), ' local time =>') ; CMJD := Trunc(T)+15018 ; Write(':: Local CMJD = ', CMJD) ; case GTZI of {TIME_ZONE_ID_UNKNOWN} 0 : T := 0 ; {TIME_ZONE_ID_STANDARD} 1 : T := T + StandardBias/1440 ; {TIME_ZONE_ID_DAYLIGHT} 2 : T := T + DaylightBias/1440 ; end ; MJD := Trunc(T)+15018 ; Writeln(' True MJD = ', MJD, ' GMT = ', ItIs(T)) ; time_t := Trunc(86400*(T-EncodeDate(1970, 1, 1))) ; Writeln(':: UNIX time_t = ', time_t, ' sec, from 1970-01-01 00:00:00 GMT.') ; Writeln('SET CMJD=', CMJD:1) ; Writeln('SET MJD=', MJD:1) ; Writeln('SET GMT=', ItIs(T)) ; Writeln('SET time_t=', time_t) ; end { w TZI } ; END.