![]() |
Delphi-Version: 5
Formatierung der Datum und Zeit je nach Windows-Spracheinstellungen???
Hallo!
Server sendet dem Client XML-Daten mit mehreren Datum-Zeit-Feldern (z.B. 01.02.2011 18:20:51) drin, die dann auf der Client-Seite mittels StrToDateTime() den TDateTime-Eigenschaften eines Objekts zugewiesen werden. Wenn in den Windows-Einstellungen für Region und Sprache eine andere Sprache eingestellt ist (z.B. Englisch oder Arabisch) schlägt die Umwandlung mit StrToDateTime() fehl, weil die Datum- und Zeitformat anders sind. Das Problem lässt sich natürlich ganz einfach lösen, indem man beim Start des Programms die SysUtils-Variablen DateSeparator, ShortDateFormat und LongTimeFormat vorsorglich mit deutschen Werten überschreibt. Das Problem ist, dass wenn ich dann die Datum und Zeit aus der Eigenschaft in der aktuell eingestellten Sprache visualisieren möchte, muss ich die o.g. Variablen wieder in den ursprünglichen Zustand zurücksetzen. Wie mache ich das? Gibt es in meinem Fall eine Möglichkeit, die im deutschen Format übertragene Datum und Zeit einer TDateTime-Variable zuzuweisen, ohne die o.g. SysUtils-Variablen zu überscheiben? Danke! |
AW: Formatierung der Datum und Zeit je nach Windows-Spracheinstellungen???
Verwende die überladene Funktion mit den Formateinstellungen
|
AW: Formatierung der Datum und Zeit je nach Windows-Spracheinstellungen???
Er meint das
![]() ![]() Dafür initialisierst du dir in deiner Anwendung eine globale Version davon, welche beim Programmstart mit den gewünschten Werten belegt und dann überall mit angegeben wird. Oder du kapselst dir alles in einer Funktion, welche dir einen "Serverzeitstring" zurückliefert. [edit] aber mir fällt grad ein (falls die Delphiangabe im Thread absicht ist und nicht einfach nur vergessen wurde und da nichts im Profil steht)... Gab es diese Parameter in Delphi 5 schon? |
AW: Formatierung der Datum und Zeit je nach Windows-Spracheinstellungen???
Hallo
Vorschlag:
Delphi-Quellcode:
// Beispiel:
// s3 := '2008-09-23T14:15:22.984'; // dt6 := fctString2DateTime('YYYY MM DD HH NN SS ZZZ',s3); function fctString2DateTime(const sFormat,sDateTimeString:String):TDateTime; var i0 : integer; w1Year,w2Month,w3Day,w4Hour,w5Min,w6Sec,w7MSec:Word; i8 : Integer; begin // local init Result := 0.0; i0 := 0; w1Year := 0; w2Month:= 0; w3Day := 0; w4Hour := 0; w5Min := 0; w6Sec := 0; w7MSec := 0; i8 := 0; // local main try if (Length(sFormat)=Length(sDateTimeString)) then begin for i8 := 1 to Length(sFormat) do begin i0 := Ord(sDateTimeString[i8])-48; if (i0>=0) and (i0<=9) then begin case sFormat[i8] of 'Y','y':w1Year := w1Year * 10 + i0; 'M','m':w2Month := w2Month * 10 + i0; 'D','d':w3Day := w3Day * 10 + i0; 'H','h':w4Hour := w4Hour * 10 + i0; 'N','n':w5Min := w5Min * 10 + i0; 'S','s':w6Sec := w6Sec * 10 + i0; 'Z','z':w7MSec := w7MSec * 10 + i0; end; end; end; end; Result := EncodeDateTime(w1Year,w2Month,w3Day,w4Hour,w5Min,w6Sec,w7MSec); except Result := 0.0; end; end; |
AW: Formatierung der Datum und Zeit je nach Windows-Spracheinstellungen???
Vielen Dank für die schnelle Reaktionen!
Zitat:
Aber um empfangene Datum und Zeit in TDateTime umzuwandelt, muss ich die DateSeparator, ShortDateFormat und LongTimeFormat vor der Umwandlung trotzdem überschreiben, oder gibt es dafür auch eine Funktion? @peschai Vielen Dank! Ich schaue mir die Funktion jetzt an. |
AW: Formatierung der Datum und Zeit je nach Windows-Spracheinstellungen???
Standardmässig sollten die Systemeinstellungen automaticsh verwendet werden.
|
AW: Formatierung der Datum und Zeit je nach Windows-Spracheinstellungen???
Vergiss die Zeitzonen Informationen nicht, wenn sich Client und Server in unterschiedlichen Zeitzonen aufhalten gibts sonst verfälschte Daten.
|
AW: Formatierung der Datum und Zeit je nach Windows-Spracheinstellungen???
Hallo,
schreib dir doch eine eigene StrToDateTime2, in der du die Originalvariablen (DateSeparator, ShortDateFormat und LongTimeFormat) rettest, deine eigenen Werte setzt und im finally die geretteten Daten wieder zurückschreibst. Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:30 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