Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Datum convert error (https://www.delphipraxis.net/93384-datum-convert-error.html)

Ajin 5. Jun 2007 08:00


Datum convert error
 
Hallo!

Zum Thema Datum gibts ja unendlich viele Beiträge. Ich habe ein label mit folgender Caption: 05.06.2007 Diesen String wollte ich in ein gültiges Datum konvertieren um es mit einem anderen zu vergleichen. StrToDate nd EncodeDate werden hier nicht viel nüzten. StrToDate schmeisst ne Exception (ich denke wegen der 4 stelligen Jahreszahl) und Encode Date verlangt ein bestimmtes Format (yyyy,dd,mm oder so ähnlich).

Gibts da nix eleganteres? Der String ist doch im Prinzip in einem schönen Datumsformat.

DeddyH 5. Jun 2007 08:07

Re: Datum convert error
 
Zitat:

Zitat von Ajin
StrToDate schmeisst ne Exception (ich denke wegen der 4 stelligen Jahreszahl)

Bei mir nicht. Vielleicht sind Deine Datumseinstellungen nicht kompatibel zu diesem String.

DeddyH 5. Jun 2007 08:12

Re: Datum convert error
 
Habe da mal eine etwas umständliche Lösung, die dafür aber unabhängig von den Windows-Einstellungen sein sollte.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var aDate: TDate;
    aY,aM,aD: Word;
    s: string;
begin
  s := '05.12.2007';
  aD := StrToInt(Copy(s,1,Pos('.',s) - 1));
  Delete(s,1,Pos('.',s));
  aM := StrToInt(Copy(s,1,Pos('.',s) - 1));
  Delete(s,1,Pos('.',s));
  aY := StrToInt(s);
  aDate := EncodeDate(aY,aM,aD);
  ShowMessage(FormatDateTime('dd.MM.yyyy',aDate));
end;

Ajin 5. Jun 2007 08:22

Re: Datum convert error
 
Da werd ich mich wohl im Storchbraten üben müssen, dein Ansatz klappt Prima. Dafür vielen Dank! Nichtsdestoweniger Trotz werde ich mal prüfen, wieso mein Datumsstring solche Probleme beim Konvertieren gemacht hat. :dp:

CCRDude 5. Jun 2007 09:45

Re: Datum convert error
 
Tipp: es gibt zwei Versionen von StrToDate, der überladenen Version kannst Du ein TFormatSettings übergeben, in dem Du in Spezialfällen auch vorschreiben kannst, welches Textformat der übergebene Text hat.

Cappuccino 5. Jun 2007 10:46

Re: Datum convert error
 
Pass auf, da kommt bald einer auf die Idee, mit englischer Datumseinstellung von Windows zu arbeiten, und dann passt die Zerlegung nicht mehr.
Ich habe die (nicht schöne) Lösung genommen und das Format mit angegeben, dann weiß der Benutzer wenigstens, wie er eingeben muss.

Gruß
Tom

DeddyH 5. Jun 2007 10:50

Re: Datum convert error
 
Zitat:

Zitat von Cappuccino
Pass auf, da kommt bald einer auf die Idee, mit englischer Datumseinstellung von Windows zu arbeiten, und dann passt die Zerlegung nicht mehr.

Solange der String von einem Label kommt, über dessen Format der Programmierer (hoffentlich) die Kontrolle hat, greift dieses Argument nicht. :)

Ajin 6. Jun 2007 20:49

Re: Datum convert error
 
Wenn ich aber das Datum von HEUTE mit dem Datum von GESTERN mit DAYSBETWEEN vergleiche kommt 1 heraus. Sollte das nicht -1 lauten?
Wie kann man denn bei dem Result 1 wissen, ob das zu vergleichende Datum mit Heute GESTERN oder MORGEN war?

Beispiel:
Euer Abo läuft demnächst aus. Heute ist der 06.06.2007

Abo läuft am 07.06. aus = ihr habt noch 1 Tag um es zu nutzen
Abo läuft am 06.06. aus = Es ist heute abgelaufen (0 Tage)
Abo ist gestern ausgelaufen (05.06.) = DaysBetween liefert ebenfalls 1 Tag zurück.

:wiejetzt:

Wie kann ich dem Nutzer mitteilen, dass sein Abo bereits seid 1 Tag abgelaufen ist?

marabu 6. Jun 2007 20:59

Re: Datum convert error
 
Hallo Jaimy,

nimm die Differenz und nicht den Abstand:

Delphi-Quellcode:
function RemainingDays(dt: TDateTime): Integer;
begin
  Result := Trunc(dt - Now);
end;
Gute Nacht

Ajin 6. Jun 2007 21:15

Re: Datum convert error
 
Das ist ein Argument, welches:

1. zu 100% funktionert und
2. dir eine erholsame Nachtruhe bescheren soll

Vielen Dank und gute Nacht Achim :hi:


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:12 Uhr.
Seite 1 von 2  1 2      

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