WOHER kommt dann die SYSTEMZEIT?
Vom
OS natürlich.
Zitat:
Gibt es einen TIMESERVER im Netzwerk?
Selbstverständlich. Aber nur die echten Systeme holen sich einmal täglich die Zeit von diesem (mit AboutTime), die VMs nicht. Es betrifft aber alle Systeme.
Zitat:
Wenn ich eine Funktion mit falschen Daten füttere (z.B. LocalDateTimeFromUTCDateTime(now) ), dann kommen natürlich falsche Daten heraus.
Ich berechne in meinem Code keine lokale Zeit (ebensowenig wie das angesprochene Tool, schätze ich mal). Ich hole mir mit dieser Funktion den TimeDateStamp aus dem Executable:
Delphi-Quellcode:
{$IFDEF DELPHI2009_AND_UP}
{ The following two functions are (C) TOndrej @ StackOverflow
http://stackoverflow.com/questions/8437300/how-can-i-automate-getting-the-date-of-build-into-a-constant-visible-to-my-code }
function LinkerTimeStamp(const FileName: AnsiString): TDateTime;
var
LI: TLoadedImage;
begin
if NOT MapAndLoad(PAnsiChar(FileName), nil, @LI, False, True) then
RaiseLastOsError;
Result := LI.FileHeader.FileHeader.TimeDateStamp / SecsPerDay + UnixDateDelta;
UnMapAndLoad(@LI);
end;
//------------------------------------------------------------------------------
function LinkerTimestamp: TDateTime;
begin
Result := PImageNtHeaders(HInstance
+ PImageDosHeader(HInstance)^._lfanew)^.FileHeader.TimeDateStamp
/ SecsPerDay
+ UnixDateDelta;
end;
{$ENDIF}
Und vergleiche dessen Ausgabe mit dem Zeitstempel des Executable selbst, den man im Total Commander, Explorer oder woanders ablesen kann. Probier mal die Funktion selbst aus, vermutlich bekommst du dann auch zwei Stunden Abweichung, obwohl es laut Zeitzone GMT+1 nur eine sein dürfte.
MfG Dalai