Unixtimestamp als Int to String
-
Hallo,
ich habe schon gesucht aber leider nichts gefunden, kann mir vieleicht jemand sagen wie ich einen Unixtimestamp den ich als Int habe in einen formatierten String bekomme?
Mfg
Piet
-
Schau dir mal sprintf an.
Damit kannst du relativ leicht ints in string
konvertieren.
Und auch eine entsprechende Formatierung
kannst du so leicht erstellen.
-
vertehe ich richtig, dass du die char-representation einer unix-zeit haben willst? das geht am einfachsten, wenn du den unix-timestamp mittels localtime() in einer c-timestamp umwandelst, den du dann mit asctime() in die lokale deutung des datums umwandelst.
also:datum_string=asctime(localtime(deine_unixzeit));
-
@ghorst:
so klappts leider nicht.ich habe die Zeit als
i_timestamp = atoi(c_tstamp);Den Timestamp habe ich ursprünglich als Char über einen TCP Socket empfangen.
string s_Send; s_Send=asctime( localtime(i_timestamp) );führt leider zu
error C2664: 'localtime' : cannot convert parameter 1 from 'int' to 'const time_t *'Hast du vieleicht noch eine Idee?
Mit sprintf habe ichs leider auch noch nicht geschafft den Stamp sinnvoll zu formatieren.
-
Piet2007 schrieb:
i_timestamp = atoi(c_tstamp);Den Timestamp habe ich ursprünglich als Char über einen TCP Socket empfangen.
atoi erwartet ja auch char*, nicht char, und ein kompletter UNIX-Timestamp passt in einen char sowieso nicht rein.
Oder meinst Du "...habe ich ursprünglich als Zeichenkette über..."?
-scnr-Zu localtime: Da localtime einen Zeiger erwartet, musst Du hier den Umweg über eine temp. Variable gehen. Die sollte darüberhinaus vom Typ time_t sein (der ist unsigned im Gegensatz zu int).
time_t i_timestamp = ...; string s_time = asctime(localtime(&i_timestamp));
-
@LordJaxom:
Danke, ich werds mal über den tmp umweg versuchen.
Ja ich meinte natürlich eine Zeichenkette, genauer ist es natürlich ein Char Array mit entsprechender Länge, sodass der komplette Timestamp reinpasst.