TimeStamp in long auslesen bzw. bearbeiten
-
Hallo liebe C++ler,
Ich arbeite gerade an einen Projekt wo ich die Kalenderdaten eines Programms (David.fx) auf einer Internetseite Veröffentlichen will. Klappt auch ganz gut bis jetzt, das ein zigste was mir jetzt noch fehlt ist die Zeit/Datum anzeige.
Ich bekomme aus einer Datei (archive.dat) die Daten über einen von Hersteller vorgegeben struct ausgelesen. In diesen struct ist die Anfangs und die Endzeit des Termins in long gespeichert (z.B. StatusTime: 1285062033, SendTime: 1285236000, StopTime: 1285246800).
hier ein Ausschnitt des structs:long StatusTime; //Time of the log according to //the status, and the time is //coded as UCT (Unsiversal //Coordinated Time). Represents //a counter of secondes since //00:00:00 1.Jan.1970 long SendTime; //Sending date for the job. //Definitions are in the following //table: #define ST_IMMEDIATE -1 #define ST_NIGHT -2 #define xST_DY (-10) #define xST_DY_IMMEDIATE (-10) #define xST_DY_QUICK (-11) #define xST_DY_NORMAL (-12) #define xST_DY_AT_BEST (-13)[...]
long StopTime; //Calendar stop time of entryLeider weiß ich jetzt nicht wie ich den long Datentyp zu ein Vernünftiges Datum und Uhrzeit bekomme (z.B. 2010-09-16 09:30:00).
Hoffe jemand kann mir helfen
MFG Eles
-
lmgtfy: c++ time
http://www.cplusplus.com/reference/clibrary/ctime/
http://www.cplusplus.com/reference/clibrary/ctime/mktime/
http://www.cplusplus.com/time_t
http://www.cplusplus.com/reference/clibrary/ctime/time_t/ schrieb:
time_t
type
<ctime>Time type
Type capable of representing times and support arithmetical operations.This type is returned by the time function and is used as parameter by some other functions of the <ctime> header.
It is almost universally expected to be an integral value representing the number of seconds elapsed since 00:00 hours, Jan 1, 1970 UTC. This is due to historical reasons, since it corresponds to a unix timestamp, but is widely implemented in C libraries across all platforms.
-
//............... Represents //a counter of secondes since //00:00:00 1.Jan.1970http://en.wikipedia.org/wiki/Unix_time
http://linux.die.net/man/3/ctime
-
Vielen dank für die Links, habe es endlich hin bekommen! Ist eigentlich recht simple wenn man weiß wie

Hier mal meine Lösung (vielleicht verbesserungswürdig aber funktioniert^^)
time_t now; struct tm *ts; char buf[80]; now = TSR.SendTime; ts = localtime(&now); strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S %Z", ts); Memo1->Lines->Add("SendTime: "+String(buf)); now = TSR.StopTime; ts = localtime(&now); strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S %Z", ts); Memo1->Lines->Add("StopTime: "+String(buf));Wenn jemand eine besser oder kürzere Version hat, immer her damit^^
-
Da du ein Memo verwendest gehe ich davon aus, dass du irgendeinen Borland Compiler einsetzt. Die VCL hat einige Funktionen, die den Umgang mit Zeitstempel erleichtern.
AnsiString StartTime = UnixToDateTime( TSR.SendTime ).DateTimeString();Statt DateTimeString() kann Format() benutzt werden, das den Zeitstempel entsprechend eines Formatstrings formatiert.
-
Leider gibt es die Funktion UnixToDateTime() nicht, oder muss ich dazu eine besondere Bibliothek includen?
-
Doch die gibts, taucht sogar in der Hilfe auf. Du musst dazu <DateUtils.hpp> inkludieren.