Einzelnen Beitrag anzeigen

Benutzerbild von nicodex
nicodex

Registriert seit: 2. Jan 2008
Ort: Darmstadt
286 Beiträge
 
Delphi 2007 Professional
 
#12

Re: C++ DateTime in Delphi TDateTime umwandeln.

  Alt 17. Apr 2009, 09:29
Zitat von Andreas L.:
Zitat von Chemiker:
12879544607645573 = Datum/Zeit. Welches Datum/Uhrzeit soll dieser Wert repräsentieren?

Hast Du die passenden Werte von Datum/Uhrzeit?
Ja, es soll der Donnerstag, 19. Februar 2009 20:16:47 sein.
Nö, 19:16 (20:16 ist die lokale Zeit bei dir).

Zitat von Andreas L.:
OK, ich hab jetzt weitere Infos. Es scheint sich um das von Webkit verwendet Datumsformat zu handeln:
Zitat:
WEBKIT time which is the number of microseconds since midnight UTC of 1 January 1601
Wie könnte ich das nun am besten umrechnen?
Windows verwendet ein ähnliches Zeitformat für TFileTime - nur in 100 Nanosekunden anstatt Mikrosekunden:
Delphi-Quellcode:
type
  TWebKitTime = UInt64;

function WebKitTimeToDateTime(const AWebKitTime: TWebKitTime;
  out ADateTime: TDateTime): Boolean;
var
  SystemTime: TSystemTime;
begin
  Result := FileTimeToSystemTime(TFileTime(AWebKitTime * 10), SystemTime);
  if Result then
  try
    ADateTime := SystemTimeToDateTime(SystemTime);
  except
    on E: EConvertError do
      Result := False;
  end;
end;

procedure TestWebKitTimeToDateTime();
var
  DateTime: TDateTime;
begin
  if WebKitTimeToDateTime(StrToInt64('12879544607645573'), DateTime) then
    ShowMessage(DateTimeToStr(DateTime));
end;
Für die Umrechnung in eine lokale Zeit könnte man FileTimeToLocalFileTime verwenden.

Wie auch immer, man sollte beachten, dass TDateTime nicht alle Werte eines TFileTime/TWebKitTime abbilden kann (vor dem 30.12.1899).
  Mit Zitat antworten Zitat