AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TDateTime Zeitzone setzen

Ein Thema von kagi3624 · begonnen am 14. Okt 2020 · letzter Beitrag vom 15. Okt 2020
Antwort Antwort
kagi3624

Registriert seit: 3. Feb 2020
138 Beiträge
 
Delphi 6 Enterprise
 
#1

TDateTime Zeitzone setzen

  Alt 14. Okt 2020, 14:00
Delphi-Version: 6
Moin,

ich muss hier Einen Unix Zeitstempel in menschenlesbare Zeit umwandeln. Mit UnixToDatetime von DateUtils wird es auch gemacht, bis auf die Sache, dass es in der UTC Zeitzone ausgegeben wird. Gibt es eine einfache Funktion bzw. Parameter um es auch UTC +2 zu setzen. Dankeschön.

Edit: Hab jetzt einfach IncHour draufgeworfen. K.A. ob es das "richtige" vorgehen ist. Wenn nicht, bitte sagen

Geändert von kagi3624 (14. Okt 2020 um 14:07 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.156 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: TDateTime Zeitzone setzen

  Alt 14. Okt 2020, 14:10
Das stimmt spätestens nach der nächsten Zeitumstellung nicht mehr.

In der Unit System.DateUtils steckt die Klasse TTimeZone
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#3

AW: TDateTime Zeitzone setzen

  Alt 14. Okt 2020, 14:18
Die Funktion Delphi-Referenz durchsuchenUnixToDateTime hat in neueren Delphis einen optionalen zweiten Parameter AReturnUTC. Wenn du wirklich D6 benutzt, wirst du einen Umweg gehen müssen, z.B. mit den Funktionen Delphi-Referenz durchsuchenDateTimeToSystemTime MSDN-Library durchsuchenSystemTimeToTzSpecificLocalTime und Delphi-Referenz durchsuchenSystemTimeToDateTime. Vielleicht hat Delphi sogar eine eigene Funktion zur Umrechnung von UTC in lokale Zeit (und/oder umgekehrt).

Grüße
Dalai
  Mit Zitat antworten Zitat
kagi3624

Registriert seit: 3. Feb 2020
138 Beiträge
 
Delphi 6 Enterprise
 
#4

AW: TDateTime Zeitzone setzen

  Alt 14. Okt 2020, 14:47
Das stimmt spätestens nach der nächsten Zeitumstellung nicht mehr.

In der Unit System.DateUtils steckt die Klasse TTimeZone
Nicht in Delphi6. Da gibts gar nichts zu Zone.

Die Funktion Delphi-Referenz durchsuchenUnixToDateTime hat in neueren Delphis einen optionalen zweiten Parameter AReturnUTC. Wenn du wirklich D6 benutzt, wirst du einen Umweg gehen müssen, z.B. mit den Funktionen Delphi-Referenz durchsuchenDateTimeToSystemTime MSDN-Library durchsuchenSystemTimeToTzSpecificLocalTime und Delphi-Referenz durchsuchenSystemTimeToDateTime. Vielleicht hat Delphi sogar eine eigene Funktion zur Umrechnung von UTC in lokale Zeit (und/oder umgekehrt).

Grüße
Dalai
Delphi-Quellcode:
    unixT1 := 1602679692;
    timeBegin := UnixToDateTime(unixT1);
    DateTimeToSystemTime(timeBegin, dSysTime);
Funktioniert leider nicht

Hab eine Lösung hier gefunden. Ist zwar für Delphi > 6, aber es funktioniert!

Delphi-Quellcode:
function LocalDateTimeFromUTCDateTime(const UTCDateTime: TDateTime): TDateTime;
var
  LocalSystemTime: TSystemTime;
  UTCSystemTime: TSystemTime;
  LocalFileTime: TFileTime;
  UTCFileTime: TFileTime;
begin
  DateTimeToSystemTime(UTCDateTime, UTCSystemTime);
  SystemTimeToFileTime(UTCSystemTime, UTCFileTime);
  if FileTimeToLocalFileTime(UTCFileTime, LocalFileTime)
  and FileTimeToSystemTime(LocalFileTime, LocalSystemTime) then begin
    Result := SystemTimeToDateTime(LocalSystemTime);
  end else begin
    Result := UTCDateTime; // Default to UTC if any conversion function fails.
  end;
end;

Geändert von kagi3624 (14. Okt 2020 um 15:28 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#5

AW: TDateTime Zeitzone setzen

  Alt 14. Okt 2020, 16:35
Delphi-Quellcode:
    unixT1 := 1602679692;
    timeBegin := UnixToDateTime(unixT1);
    DateTimeToSystemTime(timeBegin, dSysTime);
Funktioniert leider nicht
Du musst schon alle genannten Funktionen benutzen. Du willst ja keine TSystemTime haben sondern TDateTime. Also häng noch SystemTimeToTzSpecificLocalTime und SystemTimeToDateTime dran, dann sollte das tun.

Grüße
Dalai
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.936 Beiträge
 
Delphi 12 Athens
 
#6

AW: TDateTime Zeitzone setzen

  Alt 14. Okt 2020, 20:30
Nicht in Delphi6. Da gibts gar nichts zu Zone.
Tja, neuere Versionen sind halt nicht nur neuer sondern haben auch neue zusätzliche Funktionen...
  Mit Zitat antworten Zitat
kagi3624

Registriert seit: 3. Feb 2020
138 Beiträge
 
Delphi 6 Enterprise
 
#7

AW: TDateTime Zeitzone setzen

  Alt 15. Okt 2020, 07:29
Nicht in Delphi6. Da gibts gar nichts zu Zone.
Tja, neuere Versionen sind halt nicht nur neuer sondern haben auch neue zusätzliche Funktionen...
Solange die amerikanischen Atomraketen noch mit Fortran 4 fliegen... Ich hab mir weder Delphi noch irgendeine Version davon ausgesucht
  Mit Zitat antworten Zitat
Antwort Antwort


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 +1. Es ist jetzt 06:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz