Datum (String) in TDateTime umwandelen



  • Hallo.

    Ich komm einfach nicht mit den Datums & Uhrzeitsfunktionen zurecht.
    Vielleicht kann mir ja jemand von euch helfen.
    Ich habe eine SQL abfrage, durch die ich ein Datum im Format "YYYY-MM-DD HH:MM:SS" bekomme. Aber wie bekomm ich das jetzt am besten in ein TDateTime-Object rein ?

    Schöne Feiertage noch,
    Gruß Fritz



  • TDateTime ist eine Zahl bei der der Vorkommateil die Tage seit 30.12.1899 und
    der Nachkommateil die Zeit als Bruchteil von 24 ist.

    Holen
    Datum = Date();
    Zeit = Time();
    Datum + Uhrzeit = Now();

    Umwandeln
    Str = DateToStr(Datum);
    Datum = StrToDate(String);
    Str = TimeToStr(Zeit);
    Zeit = StrToTime(String);
    String = FormatDateTime("yyyy_mm_dd", Date());

    Zerlegen / Zusammensetzen
    DecodeTime(Zeit,St,Min,Sek,HSek);
    DecodeDate(Datum,Jahr,Mon,Tag);
    Zeit = EncodeTime(St,Min,Sek,HSek);
    Datum = EncodeDate(Jahr,Mon,Tag);

    Vielleicht hilfts dir ja!

    Gruß
    MWJK



  • Fritz B. schrieb:

    ...durch die ich ein Datum im Format "YYYY-MM-DD HH:MM:SS"
    bekomme. Aber wie bekomm ich das jetzt am besten in ein TDateTime-Object rein?

    Hi,

    nun zerflücke doch einfach die von dort erhaltenen Datum- und Zeitinformationen,
    und füttere damit dein neu zu erstellendes "TDateTime" Objekt, hier die Syntax:

    TDateTime * TDateTime (unsigned short year, unsigned short month, unsigned short day);

    TDateTime * TDateTime (unsigned short hour, unsigned short min, unsigned short sec, unsigned short msec);

    ...das wäre denn eigentlich schon alles. In der Klasse sind denn alle
    notwendigen Routinen enthalten, da wieder einen uns bekannten "String" draus
    zu formen, den wir denn auch besser/einfacher lesen können.

    ...Ups, sehe gerade, war eine Minute zu langsam mit dem Absenden dieser Msg... 😋



  • ok...habs jetzt konvertieren können...allerginds bekomm ichs jetzt nicht hin die differenz in sekunden auszurechnen.
    über die konvertierung nach int bekomm ich nur die anzahl der tage und nicht die der stunden/min/sec. wie muss ich dass nun machen ?

    Gruß



  • MWJK schrieb:

    TDateTime ist eine Zahl bei der der Vorkommateil die Tage seit 30.12.1899 und
    der Nachkommateil die Zeit als Bruchteil von 24 ist.

    d.h. Umwandeln in int bringt hier wenig, intern wird DateTime wie double behandelt und du kannst somit zwei DateTime-Werte einfach voneinander subtrahieren

    um den Wert dann in Sekunden zu bekommen mußt du das Ergebnis der Subtraktion einfach * 24 * 60 * 60


Anmelden zum Antworten