![]() |
Delphi-Version: 5
UTC / Local Time
Hallo,
ich suche schon seit ein paar Stunden nach einer eleganten Lösung für folgendes Problem: Ich benötige die UTC Zeit für die Abflugzeit 24.02.2022 18:20 Uhr(Lokale Zeit). Abflug Ort ist Los Angelos / US. Was ich schon versucht habe ist:
Delphi-Quellcode:
Dabei wird aber die lokale Deutsche Zeit berücksichtigt.
TTimeZone.Local.ToUniversalTime();
Hat jemand eine Idee? |
AW: UTC / Local Time
Zitat:
![]() ![]() Ich hoffe das hilft Dir und löst Dein Problem. |
AW: UTC / Local Time
Welche Uses benötige ich für SystemTimeToTzSpecificLocalTimeEx?
|
AW: UTC / Local Time
Tipp: Strg+Shift+F und als Suchverzeichnis z.B. $(BDS) oder $(BDS)\Sources (inkl. Unterverzeichnisse)
und für den Dateifilter mindestens *.pas;*.inc |
AW: UTC / Local Time
Super Idee. Merke mir für die Zukunft.
Leider kein Treffer bei "SystemTimeToTzSpecificLocalTimeEx". Habe jetzt etwas brauchbares gefunden das ich noch anpassen muss: ![]() |
AW: UTC / Local Time
Zitat:
|
AW: UTC / Local Time
Da das eine WinAPI ist, wäre der erste Blick ins MSDN ... kann sein, dass Delphi diese API aber noch nicht drin hat.
siehe MSDN oder Google (die Seiten zu den API wurden oben aber bereits verlinkt) ![]() ![]() Und dann entweder selber die API von C++ nach Delphi übersetzen oder schauen, ob es irgendwo eine Delphi-Library gibt, wo das schon übersetzt ist. (z.B. die JEDI) |
AW: UTC / Local Time
Hier ist meine recht alte Portierung.
Delphi-Quellcode:
Dies ist ein Grundstein und sollte helfen das Problem zu lösen. (Der obige Code half mir den Zeitunterschied in Stunden zu ermitteln)
program Project1;
uses Windows, SysUtils, DateUtils; // include winapi methods function TzSpecificLocalTimeToSystemTime(lpTimeZoneInformation: PTimeZoneInformation; var lpLocalTime, lpUniversalTime: TSystemTime): BOOL; stdcall; external kernel32 name 'TzSpecificLocalTimeToSystemTime'; function SystemTimeToTzSpecificLocalTime(lpTimeZoneInformation: PTimeZoneInformation; var lpUniversalTime, lpLocalTime: TSystemTime): BOOL; stdcall; external kernel32 name 'SystemTimeToTzSpecificLocalTime'; // convert local time to UTC function DateTimeToUTC(const Local: TDateTime): TDateTime; var TZI: TTimeZoneInformation; LocalTime, UniversalTime: TSystemTime; begin GetTimeZoneInformation(TZI); DateTimeToSystemTime(Local, LocalTime); TzSpecificLocalTimeToSystemTime(@TZI, LocalTime, UniversalTime); Result := SystemTimeToDateTime(UniversalTime); end; // convert UTC to local time function UTCToLocalDateTime(const UTC: TDateTime): TDateTime; var TZI: TTimeZoneInformation; LocalTime, UniversalTime: TSystemTime; begin GetTimeZoneInformation(TZI); DateTimeToSystemTime(UTC, UniversalTime); SystemTimeToTzSpecificLocalTime(@TZI, UniversalTime, LocalTime); Result := SystemTimeToDateTime(LocalTime); end; // example usage var Local, UTC: TDateTime; begin Local := Now; UTC := DateTimeToUTC(Local); WriteLn('Local: ' + DateTimeToStr(Local)); WriteLn('UTC: ' + DateTimeToStr(UTC)); WriteLn('Offset: ' + IntToStr(SecondsBetween(Local, UTC) div 60 div 60)); ReadLn; end. |
AW: UTC / Local Time
Super. Danke an alle.
|
AW: UTC / Local Time
Ich möchte als Alternative noch
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 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