Datum aus DateTime auslesen



  • Ich habe in einem Label eine DateTime angebe stehen, die von einem Datenbankeintrag kommt, also z.B. 20.08.2010 12:36:17
    Nun möchte ich nur das Datum aus dem Label auslesen, kann mir jemand weiterhelfen???

    Danke



  • Hallo

    Dann must du entweder manuell mit den üblichen String-Methoden den Labeltext parsen oder vom Konstruktor von TDateTime parsen lassen.

    bis bald
    akari



  • Öh, was will er denn überhaupt? Und was hat das Label damit zu tun? Ein Label ist nun mal ein reines Anzeigeobjekt.

    Wenn er nur das Datum ausgegeben haben:

    TDateTime dt = (Wert aus DB lesen);
    Label1->Caption = dt.DateString();
    

    Wenn er mit dem Datumswert weiterarbeiten will:

    TDateTime dt = (Wert aus DB lesen);
    dt.Val = (int) dt.Val;
    

    oder alternativ die einzelnen Werte mittels TDateTime::DecodeDate() ermitteln.



  • Hallo

    Natürlich ist die Verwendung des Original-TDateTime immer noch das beste. Ich habe es so verstanden, das dieses nicht mehr vorhanden ist, und nur noch in einem Label als Text steht.

    bis bald
    akari



  • @akari: Das hast du schon richtig verstanden, es ist nicht mehr vorhanden.
    Also: Wie bekomme ich den Text/Caption von dem Label in ein DateTime Format und lese dann anschließend nur das Datum aus, also ohne Time?

    Danke



  • Hallo

    Hab ich doch schon gesagt : TDateTime kann auch wieder den Text parsen.

    TDateTime x = Now();
      Label1->Caption = x;
      TDateTime y = TDateTime(Label1->Caption); // Text in Datum umwandeln
      Label2->Caption = y.DateString(); // Den Datumsanteil extrahieren
    

    Die Umwandlung ist natürlich unsauber, wenn zwischen Ausgabekonvertierung und Einleseparser das Datumsformat wechselt. Es ist also durchaus angebracht kein Konzept zu überarbeiten und den Datumswert nicht über den umweg eines Ausgabecontrols zu schleusen, sondern wie Joe schon sagte den Wert gleich in einem TDateTime-Member des Forms zwischenzuspeichern.

    bis bald
    akari


Anmelden zum Antworten