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. |
Re: Datum convert error
Zitat:
|
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; |
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:
|
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.
|
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 |
Re: Datum convert error
Zitat:
|
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? |
Re: Datum convert error
Hallo Jaimy,
nimm die Differenz und nicht den Abstand:
Delphi-Quellcode:
Gute Nacht
function RemainingDays(dt: TDateTime): Integer;
begin Result := Trunc(dt - Now); end; |
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. |
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