TDateTime gibt keinen vollständigen String zurück



  • Guten Morgen,

    Ich habe einen AnsiString

    AnsiString dStr = "13.09.2005 00:00:00";
    

    Ich möchte diesen String erst in TDateTime konvertieren mit

    TDateTime dDat = TDateTime(dStr);
    

    Und zusätzlich noch mal Formatieren

    dDat.FormatString("dd.mm.yyyy hh:nn:ss");
    

    Dann als neuen String ausgeben

    ShowMessage(AnsiString(dDat));
    

    Sollte eigentlich wieder "13.09.2005 00:00:00" zurückgeben.
    Tut es aber nicht. Da die Zeit(Time) 00:00:00 ist bekomme ich nur "13.09.2005" zurück.

    Wie kann ich erzwingen das ich "13.09.2005 00:00:00" zurückbekomme, ohne das ich hinterher nochmal den AnsiString bearbeiten muss.



  • Schon mal so probiert?

    ShowMessage(dDat.FormatString("dd.mm.yyyy hh:nn:ss"));
    

    Gruß,

    Alexander

    Noch eine Anmerkung:
    Der Cast auf AnsiString ist intern so implementiert, dass es vier verschiedene Fälle gibt.
    Abhängig ist dies vom internen Fließkommawert.
    1. Wert <= 0 --> kein gültiger Datumswert
    2. keine Nachkommastelle --> TDateTime wird als TDate interpretiert (Dein Fall)
    3. Wert zwischen 0 und 1 --> TDateTime wird als TTime interpretiert
    4. Wert größer 1 mit Nachkommastelle --> TDateTime wird als TDateTime interpretiert



  • Das ShowMessage(AnsiString(dDat)) ist ja schon eine konvertierung in AnsiString.

    Ich dachte, das ich das dDat.FormatString("dd.mm.yyyy hh:nn:ss");
    so formatieren kann, das ich hinterher nicht mehr

    ShowMessage(dDat.FormatString("dd.mm.yyyy hh:nn:ss"));

    schreiben muss, Aber Deine "Noch eine Anmerkung:... " beantwortet meine Frage mit "Nein geht nicht"
    Schade und Danke für die schnell Antwort


Anmelden zum Antworten