Auf DateTime einige Minuten addieren
-
Hi,
ich erzeuge mir eine DateTime Variable wo ich 00:00:00 als Uhrzeit speichere. Nun habe ich einem Edit Feld eine Anzahl von Minuten stehen, die ich gerne, auf die oben erzeugt Uhrzeit addieren möchte. Mein Code geht nur für eine Minuten zahl bis 59
TDateTime dt1 = TDateTime("00:00:00"); TDateTime dt2 = TDateTime("00:" + AnsiString(Edit1->Text) + ":00"); TDateTime dt3 = dt1 + dt2; ShowMessage(dt3);Wenn in meinem Edit Feld nun z.B. eine 70 steht, kommt nen Fehler. Ist für mich auch logisch. Nur weiß ich nicht wie ich den Code umbauen muss. Ich will halt wenn im Edit Feld 70 steht, dass danach in der ShowMessage "01:10:00" angezeigt wird.
Hat da jemand eine Idee wie das am besten und am einfachsten geht?
LillyChamp
-
-
beim bcb5 gibts leider nicht die hpp und somit nicht die funktionalität

-
In TDateTime ist 1 = ein ganzer Tag
0,5 demzufolge ein halber Tag.Jetzt kann man dann rechnen:
Addiere den Quotienten von Sek/86400 zu deinm TDateTime ObjektAlso
dt=dt+(Sek*0.0000115);
-
Hi,
danke erstmal, das läuft soweit gut. nun habe ich da noch ein frage, habe testweise nun diesen fall hier am laufen:
int Sek = 70; TDateTime dt1 = TDateTime("00:00:00"); dt1 = dt1 + (Sek*0.0000115); ShowMessage(dt1);In der MessageBox wird "00:01:09" angezeigt. meiner meinung nach müsste "00:01:10" angezeigt werden. liegt das an der berechnung mit irgendwelchen rundungsproblemen? Oder muss ich einfach jedes mal noch eine Sekunde hinzuaddieren?
LillyChamp
-
Dann mach halt
int Sek = 70; TDateTime dt1 = TDateTime("00:00:00"); dt1 = dt1 + (Sek*(1/(24*60*60))); ShowMessage(dt1);Damit sollte es dann wirklich ganz genau sein.
-
Hallo
nein, denn auch da wird noch in Integer gerechnet, sodas alle Nachkommastellenb wegfallen.
So erzwingst du Float:dt1 = dt1 + (Sek*(1.0/(24*60*60)));bis bald
akari