Gibt es eine Möglichkeit, direkt in time_t zu konvertieren?
Verschiedene andere Antworten haben direkte Lösungen mit Stärken und Schwächen gepostet.
enthält nur Sekunden, aber ich weiß nicht, ob es eine gute Idee ist, das zu tun.
Antwort hängt vom Ziel ab. IMO, ist es der falsche Ansatz
Anstatt speichern/lesen als einige Compiler abhängig Format, in Betracht ziehen, ISO 8601 Standards zu verwenden und den Zeitstempel in einer Textstandardversion zu speichern, die eindeutig die Zeitzone anzeigt, vorzuziehen universelle Zeit.
Beispiel C-Code als Beitrag ist markiert C
.
Für schreiben, so etwas wie
// Minimum size to store a ISO 8601 date/time stamp
//YYYY-MM-DDThh:mm:ss\0
#define N (4 + 5*3 + 1 + 1)
time_t x;
struct tm *tm = gmtime(&x);
if (tm == NULL) {
return failure;
}
char dest[N + 1];
int cnt = snprintf(dest, sizeof(dest), "%04d-%02d-%02dT%02d:%02d:%02dZ",
tm.tm_year + 1900, tm.tm_mon+1, tm.tm_mday,
tm.tm_hour, tm.tm_min, tm.tm_sec);
if (cnt < 0 || cnt >= sizeof(dest)) {
return failure;
}
Zusätzliche Code Notwendigkeit für Sekundenbruchteile.
Siehe auch ftime(, , "%FT%T %z",)
.
Was würden Sie lieber in file.txt
lesen?
1467035651
oder
2016-06-27T13:54:11Z
Lesen Sie einfach es zu einem time_t. – kfsone
Wählen Sie bitte eine Sprache! –
Für C++ ein Duplikat zu diesem: http://stackoverflow.com/q/7113396/694576 – alk