Einzelnen Beitrag anzeigen

Alallart

Registriert seit: 8. Dez 2015
155 Beiträge
 
#6

AW: Datumsformat (TT.MM.JJJJ) anzeigen

  Alt 6. Jun 2018, 15:12
@TUX_der_Pinguin

Hier eine kleine Funktion aus einem meiner Programme:
Delphi-Quellcode:
const
  FS_Ger_DateSeparator = '.';
  FS_Ger_TimeSeparator = ':';

function FS: TFormatSettings;
begin
  GetLocaleFormatSettings(LOCALE_SYSTEM_DEFAULT, Result);
  Result.DateSeparator := FS_Ger_DateSeparator;
  Result.TimeSeparator := FS_Ger_TimeSeparator;
  Result.ShortDateFormat := 'dd/MM/yyyy';
  Result.ShortTimeFormat := 'hh:mm';
  Result.LongTimeFormat   := 'hh:mm:ss';
end;
Das habe ich so geregelt, weil ich das Datum und Uhrzeit unabhängig einer Landeseinstellung immer im gleichen Format speichern und lesen wollte.

Zuerst zu den Schrägstrichen "/" in TFormatSettings. Die muss man als Platzhalter verstehen. Zufällig passt es zu der us-amerikanischen Schreibweise. Wenn du da etwas anders rein schreibst, zB. Rauten: Result.ShortDateFormat := 'dd#MM#yyyy' deaktivierst du sozusagen die Platzhalterfunktion. In dem Fall wird das Datum mit Rauten angezeigt. Ist es ein Schrägstrich, wird das Zeichen aus Result.DateSeparator genommen. Diese Besonderheit darf man nicht vergessen . Also entweder man läßt die Schrägstriche in Ruhe, dann nimmt das System den DateSeparator, oder du manipulierst den String in ShortDateFormat direkt (was ich nicht empfehlen würde).

Machen wir ein Beispiel:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  FS2: TFormatSettings;
begin
  FS2 := FS;
  ShowMessage(FormatDateTime(FS2.ShortDateFormat, Now, FS2));
end;
Änder nun diese Zeile:
Delphi-Quellcode:
const
  FS_Ger_DateSeparator = '~';
Soviel zum Thema Punkt und Strich. Der Strich ist nur ein Platzhalter für das eigentliche Zeichen. Wo es die Umrechnung von TT zu dd oder YYYY zu JJJJ gibt weiß ich nicht. Vermutlich gibt es auch einen Record mit den Informationen.
  Mit Zitat antworten Zitat