Seite 1 von 1
QDateTime difference
Verfasst: 24. Juni 2010 16:24
von Irods
Hi Leute,
ich bin gerade dabei zu versuchen zwei QDateTime Variablen zu subtrahieren.
Bisher versuch ich dies folgender Maßen:
Leider funktioniert dies nicht.
Wenn jemand eine Idee hat was ich falsch mache oder wie dies anders gehen könnte wäre das echt cool.
Gruss und schon mal Dank, Irods.
PS:Ja, end ist kleiner als time.

Verfasst: 24. Juni 2010 16:35
von ireas
Hi!
Ich habe es noch nicht ausprobiert, aber eigentlich müsste
secsTo die Lösung sein (dann ein neues QDateTime erstellen und
addSecs verwenden).
Grüße,
ireas
Verfasst: 24. Juni 2010 16:39
von Irods
Danke für die schnelle Antwort ireas.
Probiere ich sofort aus

Verfasst: 24. Juni 2010 16:43
von ireas
Wenn mein Qt Creator nicht mehrere Minuten brauchen würde, bis er startet, hätte ich es schon selbst ausprobiert …
Übrigens war das gerade dein 42. Beitrag – gratuliere!

Verfasst: 24. Juni 2010 17:05
von kater
ireas hat geschrieben:Wenn mein Qt Creator nicht mehrere Minuten brauchen würde, bis er startet, hätte ich es schon selbst ausprobiert …
Hatt ich auch schon. Mal die neuste Version installieren hat geholfen

Verfasst: 24. Juni 2010 17:24
von ireas
kater hat geschrieben:ireas hat geschrieben:Wenn mein Qt Creator nicht mehrere Minuten brauchen würde, bis er startet, hätte ich es schon selbst ausprobiert …
Hatt ich auch schon. Mal die neuste Version installieren hat geholfen

Hm, eigentlich müsste er in der neusten Version vorliegen … Naja, momentan ist alles saulahm, ich muss mal wieder mein OS neuinstallieren.

Vielleicht gibt sich das Qt-Creator-Problem dann.
@topic:
Folgender exemplarischer Code generiert mir problemlos den Zeitunterschied in Sekunden, nur der addSecs-Weg zurück zu QDateTime funktioniert nicht richtig. Scheinbar muss das Datum schon valide sein, bevor addSecs aufgerufen wird – was ja eigentlich auch logisch ist.
Code: Alles auswählen
#include <QtCore>
int main()
{
QDateTime now = QDateTime::currentDateTime();
QDateTime yesterday = QDateTime::currentDateTime().addDays(-1);
int differenceInSecs = now.secsTo(yesterday);
return 0;
}
Reicht dir das, oder brauchst du auch noch ein QTime- oder QDateTime-Objekt am Ende? QTime könntest du dir mit mod- und div-Operationen basteln.
Verfasst: 25. Juni 2010 09:49
von Irods
danke Leute für die ganzen Antowrten ich hab jetzt das ganze folgender maßen gelöst
Code: Alles auswählen
QDateTime time=QDateTime::currentDateTime();
QDateTime end;
end.setTime(endTime);
end.setDate(endDate);
int all=time.secsTo(end);
int days=all/60/60/24;
int h=(all-days*24*60*60)/60/60;
int min=(all-days*24*60*60-h*60*60)/60;
int sek=all%60;
Ist ein bisschen unschön funktioniert dafür aber 100% nach meinen Vorstellungen.
Gruss Irods
Verfasst: 25. Juni 2010 12:48
von RHBaum
Anmerkung:
Hat zwar wenig Auswirkungen auf den geposteten Code, aber Du solltest es Dir angewoehnen die benutzten Klassen genauer zu untersuchen und effektivere Methoden verwenden wenn sie findest.
Konkret: QDateTime hat nen passenden CTor. Nutze den
Code: Alles auswählen
QDateTime end;
end.setTime(endTime);
end.setDate(endDate);
wird zu:
Sieht doch scho besser aus oder ?
Das geroedel mit den aufsplitten kannst dir unter anderem auch sparen.
- Du bekommst die Tage zwischen den terminen raus
- Aus einem beliebigen datum kann man die ZeitKomponente einfach abspalten
Willst doch selber bauen, wuerd ich komplett auf time_t oder so bauen und die QDateTime dinger etc versuchen rauszulassen ...
Ciao ...