Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi StrToDateDef will nicht (https://www.delphipraxis.net/201667-strtodatedef-will-nicht.html)

Codehunter 13. Aug 2019 13:45

Delphi-Version: 10.2 Tokyo

StrToDateDef will nicht
 
Hallo!
Delphi-Quellcode:
var
  LFS: TFormatSettings;
  LDate: TDate;
begin
  LFS.LongDateFormat := 'ddmmyy';
  LFS.ShortDateFormat := 'ddmmyy';
  LDate := StrToDateDef('220516', 0, LFS); // <-- Ergibt "01.01.1900" bzw. = 0
end;
Warum das denn? Sollte eigentlich der 22.05.2016 rauskommen.

Ich setze gewohnheitsmäßig LongDateFormat und ShortDateFormat gleich, weil ich die gerne mal verwechsel und so nix schief gehen kann. Ist aber bisher immer gegangen. Nur bei diesem schrägen Datumsformat kommt er nicht klar.

Grüße
Cody

DieDolly 13. Aug 2019 13:49

AW: StrToDateDef will nicht
 
Muss man nicht auch das Trennzeichen setzen, da es sonst standardmäßig das des Systems ist?

p80286 13. Aug 2019 14:08

AW: StrToDateDef will nicht
 
Wie wäre es mit 'DDMMYY', soll schon geholfen haben

Gruß
K-H

Codehunter 13. Aug 2019 14:11

AW: StrToDateDef will nicht
 
Zitat:

Zitat von DieDolly (Beitrag 1441144)
Muss man nicht auch das Trennzeichen setzen, da es sonst standardmäßig das des Systems ist?

Nur, wenn man TFormatSettings.Create zum Initialisieren aufruft, was ich ja nicht mache. Aber wie ich inzwischen herausgefunden habe, pocht DateTimeToStr auf einen DateSeparator im Formatstring. Muss ich leider wieder klassisch den String zerpflücken und mit EncodeDateTime zusammenbauen. Unpraktischerweise hab ich hier doch sogar noch das Millenium-Problem weil Daten vor dem 1.1.2000 vorkommen können :-(

hoika 13. Aug 2019 15:07

AW: StrToDateDef will nicht
 
Hallo,
Zitat:

Muss ich leider wieder klassisch den String zerpflücken
Hm, warum packst du die 2 Datumspunkte nicht einfach vor dem StrToDateDef rein?

Uwe Raabe 13. Aug 2019 15:50

AW: StrToDateDef will nicht
 
Zitat:

Zitat von hoika (Beitrag 1441155)
Hm, warum packst du die 2 Datumspunkte nicht einfach vor dem StrToDateDef rein?

Was übrigens recht einfach mit dieser Funktion aus MaskUtils zu erreichen ist:

Delphi-Quellcode:
Result := FormatMaskText('00/00/00;0; ', '220516');


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:05 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 by Thomas Breitkreuz