mit TDateTime rechnen
-
Hallo Leute,
ich habe folgendes Problem: Ich lese aus einer Datenbank(Access) den zuletzt eingetragenen Datum/Zeitwert aus. von diesem Zeitpunkt muss ich jeweils 32sec dazuzählen, und einen neuen Datensatz mit diesem zeitpunkt neu in die Datenbank eintragen. Es kann dabei über mehrere Tage gehen(max 7Tage).
das problem ist wenn ich einem Zeitpunkt die 32s hinzufüge muss ich das ja mit nachkommastellen mache (ca 0,00065...) machen. Dadurch das es aber so ein krummer wert ist bekomme ich eine zu große Zeitabweichung (Fehler) in meine Zeitwerte.
kann ich die 32s irgendwie anders hinzufügen? (z.B. direkt 2 variablen vom Datumtyp addieren)?mfg
-
Hallo Scooby,
ich habe bisher mit der FunktionTDateTime tdtZeit += EncodeTime(0, 0, 32, 0);gute Ergebnisse erziehlt.
Viel Erfolg
Evi48
-
Vielen Dank, nach soetwas habe ich gesucht!!!
was mir aber unklar ist, was passiert wenn der h wert über 24 steigt, wird dann ein Tag dazugezählt, und fängt der Zähler dann wieder bei 0 an?
Die Borland Hilfe hat in dieser Hinsicht ein komisches Deutsch bzw. eine mir unverständliche Erklärung."Der sich daraus ergebende TDateTime-Wert gibt dann Mitternacht (12:00:00:000 AM) des folgenden Tages an"
-
Hallo Scooby,
TDateTime ist eine Klasse mit Funktionen und Methoden. Der Zahlenwert ist eine double-Zahl die in den Nachkommastellen die Zeit des Tages und in den Vorkommastellen die Tage seit 30.12.1899, 0:00 enthält. So ist es kein Problem mit der Addition zumal der Operator "operator +=" in der Klasse enthalten ist. In der Hilfe kannst du nach der Klasse TDateTime suchen wo auch alle Methoden der Klasse beschrieben sind.Ein schönes (sonnereiches?) Wocheende und weiter viel Erfolg
Evi48

-
Hi Leutz,
hab da mal ne Frage und zwar wie bekomme ich die Differenz in Tagen zwischen zwei Datumsangaben?
z.B. Datum 1 -> 20.07.2005
Datum 2 -> 25.07.2005Macht eine Differenz von 5 Tagen. Wie kann ich dass berechnen lassen?
Für ne Antwort wär ich euch dankbar.
MFG
-
TDateTime ist eine Klasse mit Funktionen und Methoden. Der Zahlenwert ist eine double-Zahl die in den Nachkommastellen die Zeit des Tages und in den Vorkommastellen die Tage seit 30.12.1899, 0:00 enthält.
Die Differenz der Vorkommastellen berechnen
Dieser Operator wandelt das TDateTime-Objekt in einen double-Wert um.
__fastcall operator double() const;
Beschreibung
Der Konvertierungsoperator double gibt einen double-Wert zurück, der das TDateTime-Objekt repräsentiert. Der ganzzahlige Anteil des Wertes gibt die Anzahl der Tage an, die seit dem 30.12.1899 vergangen sind. Der Nachkommaanteil enthält die Tageszeit als Bruchteil von 24 Stunden.
-
void __fastcall TForm1::Button1Click(TObject *Sender) { TDateTime datum1=Now(); Edit1->Text = IncSecond(datum1,32); }DateUtils includen nicht vergessen.
-
So ist es korrekter...
void __fastcall TForm1::Button1Click(TObject *Sender) { TDateTime datum1=Now(); Edit1->Text = IncSecond(datum1,32).DateTimeString(); }
-
lOw schrieb:
...wie bekomme ich die Differenz in Tagen zwischen zwei Datumsangaben?
Dafür gibt es auch was in den DateUtils: DaysBetween():
Beschreibung
Mit DaysBetween können Sie die Differenz zwischen zwei TDateTime-Werten in Tagen ermitteln.
DaysBetween zählt nur ganze Tage. Die Differenz zwischen dem 31.12.1999, 23:59 Uhr und dem 01.01.2000, 23:58 Uhr wird von der Funktion DaysBetween also als Null berechnet, da die Differenz um eine Minute kürzer als ein ganzer Tag ist.