Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Datum aus anderer Zeitzone in TDateTime (https://www.delphipraxis.net/185972-datum-aus-anderer-zeitzone-tdatetime.html)

Cubysoft 23. Jul 2015 00:09

Datum aus anderer Zeitzone in TDateTime
 
Hallo,

ich habe einen String vorliegen:

Code:
2015-07-22 23:04:20 UTC
Dies muss ich in eine TDateTime Variable bekommen, unter berücksichtigung der Zeitzone des Benutzers. Ich finde dazu leider keine Funktion... muss ich das irgendwie selbst machn? Weiß einer von euch vllt weiter?


Danke!

Sir Rufo 23. Jul 2015 00:15

AW: Datum aus anderer Zeitzone in TDateTime
 
Wer hat sich dieses Format denn ausgedacht?

Ist das irgendein Standard?

Cubysoft 23. Jul 2015 00:37

AW: Datum aus anderer Zeitzone in TDateTime
 
Nein, ich bekomme die Daten aus einer API. Ich muss halt das Datum bzw die Uhrzeit, so berechnen, dass es zu der Zeitzone passt, die der Benutzer hat. Also in meinem Fall von UTC -> MEZ als eine Stunde addieren. Ich hatte halt irgendwie gehofft, dass es eine fertige Funktion gibt, die UTC zur normalen Zeit macht

mm1256 23. Jul 2015 06:10

AW: Datum aus anderer Zeitzone in TDateTime
 
[F1]
System.DateUtils.TTimeZone.UtcOffsetAus RAD Studio API Documentation Übergeordnet: TTimeZone

property UtcOffset: TTimeSpan read GetCurrentUtcOffset;C++

__property System::Timespan::TTimeSpan UtcOffset = {read=GetCurrentUtcOffset};EigenschaftenTyp Sichtbarkeit Quelle Unit Übergeordnet
property public System.DateUtils.pas
System.DateUtils.hpp System.DateUtils TTimeZone
BeschreibungGibt den aktuellen Offset von UTC (Coordinated Universal Time) für eine Zeitzone zurück.

Die Eigenschaft UtcOffset gibt den aktuellen Offset von UTC für die Zeitzone zurück.

Kategorie: API-Dokumentation
[/F1]

Der schöne Günther 23. Jul 2015 08:41

AW: Datum aus anderer Zeitzone in TDateTime
 
Mich würden jetzt noch ein paar andere Strings interessieren. Steht da am Schluss immer "UTC"? Wenn nicht, wie werden andere Zeitzonen angegeben?

Sir Rufo 23. Jul 2015 08:47

AW: Datum aus anderer Zeitzone in TDateTime
 
Ansonsten gibt es bei http://docwiki.embarcadero.com/Libra...tils.TTimeZone auch noch die Methode
Delphi-Quellcode:
ToLocalTime
.

Dazu muss man natürlich erst die Zeit bestimmen und dann mit der Methode umrechnen lassen.

Uwe Raabe 23. Jul 2015 11:10

AW: Datum aus anderer Zeitzone in TDateTime
 
Man könnte noch eine Prüfung auf den String "UTC" am Ende einbauen, aber das überlasse ich dem geneigten Leser mal als Übung. Stören tut er bei der Umwandlung aber nicht.

Delphi-Quellcode:
function StrUTCToLocalTime(const Value: string): TDateTime;
var
  fmt: TFormatSettings;
begin
  fmt.ShortDateFormat := 'yyyy/mm/dd';
  fmt.DateSeparator := '-';
  fmt.TimeSeparator := ':';
  result := TTimeZone.Local.ToLocalTime(StrToDateTime(Value, fmt));
end;

p80286 23. Jul 2015 11:43

AW: Datum aus anderer Zeitzone in TDateTime
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1309604)
Mich würden jetzt noch ein paar andere Strings interessieren. Steht da am Schluss immer "UTC"? Wenn nicht, wie werden andere Zeitzonen angegeben?

Wenn man's richtig macht:
Zitat:

Sofern nicht aus dem Zusammenhang eindeutig klar ist, welche Zeitzone gemeint ist, ist immer anzufügen, welchen Offset zur UTC die angegebene Zeit besitzt
Grundformat: 19850412T232050+0100
Erweitertes Format: 1985-04-12T23:20:50+01:00

Erst damit wird die im Beispiel angegebene Uhrzeit eindeutig als UTC 22:20:50 identifizierbar.
(vgl. hier)


Gruß
K-H

Cubysoft 15. Aug 2015 18:05

AW: Datum aus anderer Zeitzone in TDateTime
 
Hallo,

danke Uwe für deine Antwort. Ich habe es doch heute erst gebraucht, aber leider kann ich das so nicht übernehmen. Ich habe Delphi XE8 Professional und bei mir wir TTimeZone nicht erkannt. Delphi denkt es ist in Winapi.Windows, aber da ist es wohl nicht. Was ist denn die richtige Unit?

Klaus01 15. Aug 2015 18:07

AW: Datum aus anderer Zeitzone in TDateTime
 
Hallo,

in System.DateUtils ist die Klasse zu finden.

Grüße
Klaus

mkinzler 15. Aug 2015 18:12

AW: Datum aus anderer Zeitzone in TDateTime
 
Müsste in DateUtils zu finden sein.

haentschman 15. Aug 2015 18:55

AW: Datum aus anderer Zeitzone in TDateTime
 
@Cubysoft

...auch wenn die Frage schon beantwortet ist, hier noch ein Tipp. Hättest du die Delphi Referenz bemüht, wäre es dir sofort ins Auge gefallen. http://www.delphipraxis.net/dp_refer...uery=TTimeZone
Das kann man auch als Suchmaschinenprovider in den Browser packen. Schneller geht keine Hilfe. :thumb:

Cubysoft 15. Aug 2015 23:11

AW: Datum aus anderer Zeitzone in TDateTime
 
Danke für eure Antworten. Ich hatte vorher nur danach gegooglet, allerdings wohl nicht aufmerksam genug :pale:

Nur eine blöde Frage:

Wenn ich Rechtsklick auf ein unbekanntes Symbol mache, dann Refactoring->Unit suchen.. Warum findet er dann nicht die DateUtils?

haentschman 16. Aug 2015 08:02

AW: Datum aus anderer Zeitzone in TDateTime
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin...
Das sollte keine Kritik sondern eher ein Tipp für die Zukunft sein. 8-)
Zitat:

Ich hatte vorher nur danach gegooglet,
Googlen ist da eher schwierig um auf die Informationen zu kommen. Jetzt weißt du ja wie es besser geht. :thumb:
Zitat:

Wenn ich Rechtsklick auf ein unbekanntes Symbol mache, dann Refactoring->Unit suchen.. Warum findet er dann nicht die DateUtils?
...dauert zwar etwas aber funktioniert (XE)


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:27 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