Delphi-Version: 12 Athens
Merkwürdigkeiten mit FormatSettings.ShortDateFormat
Ich bin auf Merkwürdigkeiten bei der Verwendung von FormatSettings.ShortDateFormat gestoßen.
Ich habe ein Programm von RAD Studio 2007 auf RAD Studio Athens umgestellt (zwar C++, aber das sollte keinen Unterschied zu Delphi machen). In diesem alten Thema ... https://www.delphipraxis.net/169768-...ateformat.html ... habe ich folgende Aussage zu FormatSettings.ShortDateFormat gefunden: Zitat:
Mit Athens erstellt ist es bei mir und einem Teil der Anwender allerdings 'dd.mm.yyyy' und bei einigen Anwendern 'dd/mm/yyyy'. Also der Wert nicht immer identisch. :?: Frage 1: Weiß jemand wie dieser Unterschied zustande kommt (Windows-Version/-Einstellungen/...)? Nun könnte man meinen, dass das in der Praxis keinen Unterschied macht, sofern man dazu noch FormatSettings.DateSeparator berücksichtigt. Ich verwende eine Datumkonvertierung ähnlicher Art (hier vereinfachter Code):
Code:
Ich übergebe der Funktion den Wert "1902". Was wäre als Ergebnis zu erwarten?
UnicodeString ConvertDate( UnicodeString Datum )
{ TDateTime dt; FormatSettings.DateSeparator = '.'; FormatSettings.ShortDateFormat = "dd/mm/yyyy"; // alternativ "dd.mm.yyyy" dt = StrToDateDef( Datum , -1 ); if ( (int)dt != -1 ) { FormatSettings.DateSeparator = '.'; FormatSettings.ShortDateFormat = "dd.mm.yyyy"; Datum = DateTimeToStr( dt ); } return( Datum ); } Bei Verwendung von ...
Code:
... erhalte ich den Rückgabewert "19.02.2024".
FormatSettings.ShortDateFormat = "dd/mm/yyyy";
Bei Verwendung der Alternative ...
Code:
... den Rückgabewert "1902" - also den Eingabewert, weil die StrToDateDef-Funktion -1 zurückliefert.
FormatSettings.ShortDateFormat = "dd.mm.yyyy";
Ich finde die Ergebnisse überraschend. :o :?: Frage 2: Bug, Feature oder Denkfehler meinerseits? Gruß, Dirk |
AW: Merkwürdigkeiten mit FormatSettings.ShortDateFormat
https://docwiki.embarcadero.com/Libr...s.StrToDateDef
Zitat:
|
AW: Merkwürdigkeiten mit FormatSettings.ShortDateFormat
Im StrToDate, bzw. der internen Funktion darin, wurde in D11 so Eniges umgebaut.
https://www.delphipraxis.net/210022-...r-richtig.html Das Globale FormatSetting umzuschreiben, ist eh keine gute Idee. Aus diesem Grund haben viele das Datums-/Zeitfunktionen auch noch einen entsprechenden FormatSettings-Parameter. |
AW: Merkwürdigkeiten mit FormatSettings.ShortDateFormat
Ach ja, in Vorinstallierten Windowsen einiger Computer-Hersteller ist ein Bug, seit Jahrzehnten.
Im Windows gibt es mehrere Stellen, wo das "aktuelle" Datumsformat gespeichert wurde. einige neuere API verwenden die neue Stelle, aber gewisse API (welche Delphi benutzt) verwenden die alte Stelle. Leider wurde in der Installation das Datum manuell in der Registry nur teilweise gesetzt. In den Windowseinstelltungen das Datumsformat einmal auf was Anderes einstellen (z.B. englisch) und dann wieder zurück auf Deutsch, womit dann alle wichtigen Stellen richtig gespeichert sind. |
AW: Merkwürdigkeiten mit FormatSettings.ShortDateFormat
Der Text war mir bekannt ...
Zitat:
Nichts desto trotz verwundert es, dass es bei "dd/mm/yyyy" ein anderes Ergebnis gibt als bei "dd.mm.yyyy". - Dirk |
AW: Merkwürdigkeiten mit FormatSettings.ShortDateFormat
Zitat:
"dd/mm/yyyy" oder "dd.mm.yyyy"? Wo ich doch auf unterschiedlichen Rechnern unterschiedliche Werte auslese. Zitat:
- Dirk |
AW: Merkwürdigkeiten mit FormatSettings.ShortDateFormat
Sorry, es ist ein Bug im Windows, also gehört er auch dort gelöst.
|
AW: Merkwürdigkeiten mit FormatSettings.ShortDateFormat
Frag mich nicht ob das so beabsichtigt ist, aber man kann bei
Delphi-Quellcode:
den 19.Februar 2024 (und zumindest in diesem Jahr) auch auf folgende Weise eingeben: "1902", "190224" oder "19022024".
ShortDateFormat := 'dd/mm/yyyy';
Der aktuell eingestellte DateSeparator ist dabei egal, solange es kein Blank ist. Die ScanDate Funktion checkt zwar auf den DateSeparator, nimmt ihn aber implizit an wenn keiner da ist. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:39 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