2012-09-05 8 views
6

Ich versuche, einen 10-stelligen Unix-Zeitstempel (derzeit eine Zeichenfolge) mit Ctime zu formatieren.Formatieren von Unix-Timestamp mit ctime in c

ctime() erwartet jedoch einen Parameter vom Typ time_t, keine Zeichenfolge.

Was muss ich tun, bevor ich ctime verwenden kann? Mit anderen Worten, kann ich die Zeichenfolge leicht in eine time_t konvertieren?

+0

Verwenden Sie 'strtoull' (auf Überläufe prüfen). –

+0

@ eq-: Die Uhrzeit ist eine vorzeichenbehaftete Menge, nicht vorzeichenlos. Negative Zeiten sind vor 1970-01-01 00: 00: 00Z (und ja, das hinterlässt eine Zweideutigkeit zwischen Fehlern und eine Sekunde vor der Epoche). –

+0

@ JonathanLeffler, das war mir sehr bewusst. Wenn Sie jedoch von einem "10-stelligen" Zeitstempel sprechen (oder zumindest so interpretiert werden können), beschränken Sie den Bereich auf nicht negative Zeitstempel. –

Antwort

9

Sie sagen, Sie haben etwas wie 1346426869 als String und wollen es ein time_t?

time_t raw_time = atoi("1346426869"); 
printf("current time is %s",ctime(&raw_time)); 

> current time is Fri Aug 31 11:27:49 2012 
Verwandte Themen