2 Stimmen

Konvertiere Millisekunden in time_t

Ich habe die Anzahl der Millisekunden ab 2004 bis zu einem bestimmten Datum. Ich möchte dies in time_t umwandeln, um es mit ctime() anzuzeigen?

Vielleicht gibt es eine andere Methode, um das Datum anhand dieses Millisekunden-Zeitstempels zu visualisieren, hat jemand eine?

1voto

Edgar Bonet Punkte 3316

Angenommen, mit "beginnend ab 2004" meinen Sie "beginnend ab 2004 um 00:00 UTC", dann

time_t time = 1072915200 + millis / 1000;

Vorsicht, dass ctime() das Ergebnis in lokaler Zeit anzeigt statt in UTC.

0voto

Tobias Schlegel Punkte 3970

Time_t hat nur eine Genauigkeit von einer Sekunde. Wenn das für Sie in Ordnung ist, können Sie den time_t-Wert für den 01.01.2004 mit mktime() berechnen und ihn zu Ihrem Zeitwert in Sekunden hinzufügen.

struct tm tp;
memset(&tp, 0, sizeof(tp));
tp.tm_mday = 1;
tp.tm_mon = 0;
tp.tm_year = 2004 - 1900;
time_t offset = mktime(&tp);

time_t realtime = offset + yourtime / 1000;

printf("%s", ctime(&realtime));

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X