![]() |
Problem mit DateTimeToStr
hallo, ich rackere mich momentan ab einen fehler zu finden, ich finde ihn aber nicht.
ich hole mir aus dem internet das letzte änderungsdatum einer datei. die übertragung funktioniert und das ergebins ist das folgende: Timestamp: 1394916584 Lokalzeit: 15.03.2014 21:49:44 UTC / GMT: 15.03.2014 20:49:44 (quelle: ![]() wenn ich mit delphi
Delphi-Quellcode:
verwende, bekomme ich IMMER die UTC / GMT-Zeit
var MeinTimeStamp: Int64; {* ... *} DateTimeToStr(UnixToDateTime(MeinTimeStamp))
und meine uhrzeit zeigt somit immer eine stunde "früher" an. wie kann ich das ändern? |
AW: Problem mit DateTimeToStr
Such dir evtl. etwas aus der Funktion heraus:
Delphi-Quellcode:
function FileTimeToDateTime(AFileTime: Windows.TFileTime): TDateTime;
var ModifiedTime: Windows.TFileTime; SystemTime: Windows.TSystemTime; begin try FileTimeToLocalFileTime(AFileTime, ModifiedTime); FileTimeToSystemTime(ModifiedTime, SystemTime); Result := SystemTimeToDateTime(SystemTime); except Result := 0; end; end; |
AW: Problem mit DateTimeToStr
danke für diesen tipp. aber leider weiß ich nicht wie ich den anwenden kann. mein TimeStamp liegt im Int64-Format vor. ich speichere den einfach nur als Int ab.
wie konvertiere ich den denn, damit der in eine TFileTime-Variable passt? |
AW: Problem mit DateTimeToStr
letztendlich lasse ich meinen code einfach so..
ich verstehe eh nichts von lokal, utc usw. |
AW: Problem mit DateTimeToStr
FileTimeToLocalFileTime konvertiert eine UTC-Dateizeit (64-Bit) in lokale Dateizeit. Für Deutschland ist die lokale Zeit (im Winter) UTC +1 Stunde.
FileTimeToSystemTime konvertiert eine Dateizeit (64-Bit) in eine WIN32-API Systemzeit. SystemTimeToDateTime konvertiert eine WIN32-API Systemzeit in Delphi TDateTime-Zeit. EDIT: Stell dir vor du gehst morgens ins Büro und erstellst um 9 Uhr auf deinem Laptop eine Datei. Präsident Obama geht 5 Stunden später in sein Oval Office und erstellt auf seinem Laptop auch eine Datei. Nun werden 5 Jahre später die Dateien verglichen und man stellt fest, dass du in Deutschland und Obama in Amerika zu gleichen Zeit eine Datei erstellt habt, obwohl da 5 Stunden dazwischen liegen. Das würde die ganze Relativitätstheorie durcheinander bringen. Damit das nicht passiert, werden (zumindest habe ich das so verstanden) in den Zeiten intern die Zeitzonen berücksichtigt. Kommt Obama nun nach Deutschland und stellt seinem Laptop auf die Lokalzeit um, wird man feststellen, dass er seine Datei nach deutscher Zeit um 14 Uhr erstellt hat. Je nachdem, wo du nun mit dem Rechner bist, brauchst du also nur die Zeitzone neu einstellen, und schon wird die Zeit angepasst. Denn 9:00 Uhr in Deutschland ist nicht die gleiche Zeit wie 9:00 Uhr in NY. |
AW: Problem mit DateTimeToStr
ich bin mir nicht sicher ob ich das verstanden habe.
ich habe meinem timestamp der aus dem internet kommt nun "1 * 60 * 60" sekunden (1 = aktuelle Zeitzone) hinzugefügt. das ergibt eine stunde. das ergebnis ist korrekt, aber ist das so ok? |
AW: Problem mit DateTimeToStr
Vielleicht habe ich die Erklärung zu ironisch geschrieben. Am besten liest du dir den Artikel durch:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz