AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

UTC / Local Time

Ein Thema von Edelfix · begonnen am 28. Apr 2021 · letzter Beitrag vom 29. Apr 2021
Antwort Antwort
Edelfix

Registriert seit: 6. Feb 2015
Ort: Stadtoldendorf
130 Beiträge
 
Delphi 10.4 Sydney
 
#1

UTC / Local Time

  Alt 28. Apr 2021, 15:32
Delphi-Version: 5
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:

  TTimeZone.Local.ToUniversalTime(); Dabei wird aber die lokale Deutsche Zeit berücksichtigt.

Hat jemand eine Idee?
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.061 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: UTC / Local Time

  Alt 28. Apr 2021, 15:55
Hat jemand eine Idee?
Jupp, solange es Windows ist solltest Du per SystemTimeToTzSpecificLocalTimeEx oder TzSpecificLocalTimeToSystemTime Erfolg haben.

Ich hoffe das hilft Dir und löst Dein Problem.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Edelfix

Registriert seit: 6. Feb 2015
Ort: Stadtoldendorf
130 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: UTC / Local Time

  Alt 28. Apr 2021, 16:27
Welche Uses benötige ich für SystemTimeToTzSpecificLocalTimeEx?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.381 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: UTC / Local Time

  Alt 28. Apr 2021, 16:38
Tipp: Strg+Shift+F und als Suchverzeichnis z.B. $(BDS) oder $(BDS)\Sources (inkl. Unterverzeichnisse)
und für den Dateifilter mindestens *.pas;*.inc
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Edelfix

Registriert seit: 6. Feb 2015
Ort: Stadtoldendorf
130 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: UTC / Local Time

  Alt 28. Apr 2021, 16:46
Super Idee. Merke mir für die Zukunft.

Leider kein Treffer bei "SystemTimeToTzSpecificLocalTimeEx".

Habe jetzt etwas brauchbares gefunden das ich noch anpassen muss:

https://stackoverflow.com/questions/...ocal-time-zone
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.061 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: UTC / Local Time

  Alt 28. Apr 2021, 16:52
Welche Uses benötige ich für SystemTimeToTzSpecificLocalTimeEx?
Ich habe mir das selbst eingebunden da es Delphi nicht nativ unterstützt. Habe deinen letzten Link noch nicht angeschaut, wenn Du Hilfe dabei benötigst, kram ich meinen Source raus.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.381 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: UTC / Local Time

  Alt 28. Apr 2021, 16:54
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)
Bei Google suchenSystemTimeToTzSpecificLocalTimeEx
MSDN-Library durchsuchenSystemTimeToTzSpecificLocalTimeEx

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)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.061 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: UTC / Local Time

  Alt 28. Apr 2021, 17:03
Hier ist meine recht alte Portierung.
Delphi-Quellcode:
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.
Dies ist ein Grundstein und sollte helfen das Problem zu lösen. (Der obige Code half mir den Zeitunterschied in Stunden zu ermitteln)
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Edelfix

Registriert seit: 6. Feb 2015
Ort: Stadtoldendorf
130 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: UTC / Local Time

  Alt 28. Apr 2021, 17:12
Super. Danke an alle.
  Mit Zitat antworten Zitat
Benutzerbild von Lloyd Bates
Lloyd Bates

Registriert seit: 4. Jun 2009
3 Beiträge
 
Delphi XE Professional
 
#10

AW: UTC / Local Time

  Alt 29. Apr 2021, 12:12
Ich möchte als Alternative noch https://github.com/pavkam/tzdb vorschlagen.
In theory, there ought to be no difference between theory and practice. In practice, there is.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +2. Es ist jetzt 21:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf