Sekunden seit 1970 -> in Datum umwandeln ?!
-
Hallo,
ich schreibe derweil ein Log-Programm, welches Aktivitäten auf einem PC mitschreibt. Zu Beginn einer jeden Logfile soll der Startzeitpunkt der Logfile gespeichert werden, in der Form: Sekunden seit 1970.
-> 1242293051
Jetzt kann ich mir auch das Datum dahinschreiben:
-> Thu May 14 11:24:11 2009
Jetzt brauche ich aber die Sekundenzahl seit 1970 für weitere Berechnungen, das aktuelle Datum - Wochentag usw - brauche ich aber ebenfalls.
Gibt es eine einfache Funktion in <time.h>, mit der ich die Sekunden seit 1970 direkt umwandeln kann? Ich würde eher ungern beides speichern, da es einfach unnötig ist.
Ich brauche später eigentlich nur das Datum in DD.MM.YYYY, die dazugehörige Uhrzeit HH:MM:SS und den Wochentag.
Und sorry im Voraus, falls die Frage hier schon öfter gestellt wurde o.ä., habe mit der SuFu nichts gefunden, was dem Gesuchten entspricht.
Um Missverständnisse zu vermeiden:
Bisher hole ich mir wie gesagt beides, würde mich aber gerne nur mit den Sekunden begnügen und beim Auswerden der Logfiles eine einfache Umwandlung durchführen.#include <time.h> time_t t; int main(){ long sec=long(time(&t));//warning 4244 //string timestamp=ctime(&t); timestamp=**gesuchte_func**(sec); }
Ich bezweifle irgendwie, da etwas selbst schreiben zu müssen - solche Funktionen wird es doch irgendwo geben, ich finde sie nur nicht ...
//edit:
Ich habe bewusst die Variable "long sec" verwendet, da ich eine einfache Zahl (=long) aus einer Datei auslese und aus dieser Zahl dann schlussendlcih ein Datum erzeugen muss, welches so aussieht, wie das, was ctime() ausgibt.
D.h. ich brauche eine Funktion, die einfach nur eine Zahl als Input braucht. Kein Struct, kein pointer auf ein Struct, gar nichts derartiges!Einfach nur: EINE ZAHL zu einem Datum.
Da streiken meines Wissens nach (mach ich evt etwa falsch?) Funktionen wie asctime() usw, da die alle keine einfache Zahl (egal ob long oder was auch immer) als Parameter akzeptieren!
-
Dieser Thread wurde von Moderator/in volkard aus dem Forum C++ in das Forum ANSI C verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Schau doch mal im Handbuch/Referenz
und nimm nicht long, sondern time_t zum speicher von time_ts!
-
Also ich habe mich da durchgewühlt, etwas gefunden, was ich dachte, das es mich zum Ziel führen könnte... und dann ist der Datentyp das Problem.
Ich muss(!!!) eine Zahl (long, was auch immer) aus einer Datei auslesen und daraus ein Datum generieren.
D.h. es muss mit long(o.ä.) gehen. asctime()(oder andere dort beschriebene Funktionen) geht damit aber nicht.
Also Beispiel: Datei 123.log enthält die Zahl "144649849" und daraus muss ich ein Datum machen - am besten eines der Formatierung mit ctime().
-
deine dokumentation ist 15 jahre oder älter. damals war der int kurz und datümer paßten nur in longs rein. heute tun datümer auch in ints passen. um ganz frei zu sein, macht die bibliothek aber sogar früher #define time_t long und heute typedef int time_t oder sowas, damit du dich nicht darum zu kümmern brauchst. also tu einfach mal annehmen, time_t wäre das selbe wie long und mach die aufgabe mit den vorgeschlagenen funktionen. am besten, du tust von der datei schon nur einen time_t einlesen und machst gar nix mit long.
-
So habe es nun selbst herausgefunden:
time_t sec=1242293051; cout << ctime(&sec);
wäre wohl zu kompliziert gewesen das gerade zu schreiben, hm?
Bin halt nicht darauf gekommen. Danke für blöde anmachen.
Danke für keine wirkliche Hilfe.
Danke für Arroganz.und das von Moderatoren. Danke!
BB.
PS: die 2 Zeilen hätten mir echt mehr geholfen als ein Link zu einer arg umfangreichen Hilfe, die mir so nicht half, da ich das übersehen hatte. Auch hätten mir die 2 Zeilen mehr geholfen als das TuuuuT-tuuut-tut eines Moderators.
Echte Hilfe sieht anders aus. Wenn ihr euch über Leute, die sich langsam einarbeiten müssen lustig machen wollt - wunderbares Forum dafür!
-
^^nun beruhig dich soch wieder, es geht ja jetzt
-
+fricky schrieb:
soch
soll heissen: doch
-
Ja Entschuldigung, aber ich mag es nicht, wenn Menschen, die sich dazu äußern, sich so dermaßen arrogant geben. Da braucht man weder "rolleyes" noch rum zu tuten.
Wenn es einem schwer fällt kurze prägnante Hilfe zu geben, dann sollte man besser gar nichts sagen.
Optimal wären evt die 2 zeilen gewesen und die Links als Unterstützung.
-
maSu schrieb:
Ja Entschuldigung, aber ich mag es nicht, wenn Menschen, die sich dazu äußern, sich so dermaßen arrogant geben. Da braucht man weder "rolleyes" noch rum zu tuten.
Wenn es einem schwer fällt kurze prägnante Hilfe zu geben, dann sollte man besser gar nichts sagen.
Optimal wären evt die 2 zeilen gewesen und die Links als Unterstützung.Vollidiot!
-
fantastisches Forum
-
Wahnsinn
Bevor man mit Beleidigungen kommt sollte man lieber garnichts sagen...
Ich persönlich gebe auch oft einfach nur Links raus in denen die Sachen dokumentiert sind nach denen gefragt wurde. Warum?
Weil die Leute dann Folgefragen selber beantworten können, die Hintergründe verstehen und der Lerneffekt größer ist. Wenn sie trotzdem noch Hilfe brauchen greift man eben mit Code unter die Arme, aber eher als letzter Ausweg... Oder willst du das wir das Programm für dich schreiben?