Problem mit ctime und Zugabe von Sekunden zu time-t

Post Reply
Message
Author
Neodym
Posts: 12
Joined: 28. Jul 2004 11:14
Location: Wien

Problem mit ctime und Zugabe von Sekunden zu time-t

#1 Post by Neodym »

Hi!

um mich kurz zu fassen. Ich möchte zu time_t noch Sekunden hinzufügen,(zB. 86400 für einen Tag) damit mir ctime das Rechnen abnimmt.

Genau genommen möcht ich eine Klasse schreiben der ich eine Anzahl an Tagen übergebe und die mir einen String mit dem Datum zurück gibt. Ctime ist da zwar genau das richtige aber irgendwie schaffe ich es nicht die Sekunden zu time_t dazuzugeben, denn falls das geheeim compilierenn würde würde mir localtime dann das neue Datum ausgeben und ich bräuchte mich nicht darum kömmern welches Monat wir haben(28,29,30 oder 31 Tage) usw.

Probier heute schon 3 Stunden herum werde aber nicht schlauer oder ich steh wieder mal auf der Leitung (kommt beim mir öfter vor), aber wenn ich zB. schreiben

string Zeit::Datum(const int Tage )
{
time (&aZeit+Tage);
bZeit= localtime(&aZeit);

tag = bZeit->tm_mday;
monat = bZeit->tm_mon+1;
jahr = bZeit->tm_year+1900;

stringstream stringst;

stringst<<SF<<tag<<"."<<SF<<monat<<"."<<SF<<jahr<<ends;

return stringst.str();
}

dann haut er mir der Compiler soetwas raus:
error: invalid conversion from `int' to `time_t*'


Also wenn wer eine Idee hätte wär ich ihm Dankbar.

Wünsch noch einen schönen Sonntag aus Wien!

mfG Neodym
Der grösste Trick den der Teufel je gebracht hat, war der Menschheit glauben zu machen es gäbe ihn gar nicht.

_MP_

#2 Post by _MP_ »

time() arbeitet nicht mit int sondern mit dem Datentyp time_t. Wenn du den zum Rechnen verwendest, sollte alles korrekt laufen (undsich compilieren lassen).

cu

MP

Das Linux Entwicklerforum

Neodym
Posts: 12
Joined: 28. Jul 2004 11:14
Location: Wien

Re: _MP_

#3 Post by Neodym »

Hi, _MP_!

Mir war schonklar das ich time_t verändern muss, hab ich auch probiert einen neuen Wert von time_t zu erzeugen aber ich weis nicht genau wie ich das jetzt anstellen soll, habe in der man-Page von Ctime auch nicht viel über den Datentyp gefunden.
Also wie erstellt man einen time_t mit einen eigenen Sekundenwert?

Trotzdem Danke für den Hinweis!

mfG Neodym
Der grösste Trick den der Teufel je gebracht hat, war der Menschheit glauben zu machen es gäbe ihn gar nicht.

_MP_

#4 Post by _MP_ »

Ähm was hindert dich denn, deinen Zahlenwert einfach zu der Variablen vom Typ time_t hinzuzuaddieren? AFAIR geht das problemlos, da hinter time_t auch nur ein (unsigned) int steckt.

Und wenn nicht, bleibt dir immer noch der Weg, time_t auf int-Variablen zuzuweisen, damit zu rechnen und dann das Ergebnis (mit Casting) an eine time_t Variable zu übergeben.

Ach ja, das hier

time (&aZeit+Tage);

ist natürlich völliger Unsinn, damit veränderst du die Adresse, in die der Zeit-Wert geschrieben wird. Schließlich enthält aZeit erst nach Ausführen von time() einen verwendbaren Zahlenwert. Korrekterweise sollte das so aussehen:

time (&aZeit);
aZeit+=Tage;

cu

MP

Das Linux Entwicklerforum

Neodym
Posts: 12
Joined: 28. Jul 2004 11:14
Location: Wien

Re: _MP_

#5 Post by Neodym »

Hi _MP_!

Du hast natürlich recht das time(&Zeit+Tage) blödsinn ist(weis auch nicht mehr was ich mir dabei gedacht habe) und ich bin mittlerweil auch schon auf deine Lösung draufgekommen und zwar Zeit+=Tage; und dann erst den Aufruf time(&Zeit ) zu machen.

Na ja, aber aus Fehlern lernt man und ich hoffe das mir solche Fehler in Zukunft nicht merh passieren.

So, also Danke für deine Hilfe!

mfG Neodym
Der grösste Trick den der Teufel je gebracht hat, war der Menschheit glauben zu machen es gäbe ihn gar nicht.

_MP_

Re: _MP_

#6 Post by _MP_ »

Neodym wrote:Na ja, aber aus Fehlern lernt man und ich hoffe das mir solche Fehler in Zukunft nicht merh passieren.
Keine Angst, da finden sich ganz gewiss andere Fehler ;-)

cu

MP

http://www.linuxboard.org - das Linux Entwicklerforum

Post Reply