Ist clock_gettime eine UTC-Zeit oder lokale Zeitzone?

8

Gibt die Funktion clock_gettime einen Zeitstempel zurück, der von der Epoche in UTC oder in der lokalen Zeitzone gemessen wurde?

Ich weiß, dass time aus der UTC-Epoche stammen soll, aber ich kann keinen Hinweis finden, dass das Gleiche für clock_gettime gilt.

    
edA-qa mort-ora-y 16.12.2011, 09:00
quelle

3 Antworten

13

Um Wikipedia zu zitieren, ist die Unix-Epoche definiert als

  

die Zeit 00:00:00 UTC am 1. Januar 1970 (oder 1970-01-01T00: 00: 00Z ISO 8601).

Daraus folgt, dass jede Bezugnahme auf "die Epoche" UTC impliziert.

    
NPE 16.12.2011, 09:04
quelle
6

Eigentlich macht die Frage keinen großen Sinn. Eine Übersicht über zeitbezogene Funktionen finden Sie unter time (7) .

Jedes Zeitgebergerät gibt eine Zeit zurück, die von einem Ursprungsereignis in der Vergangenheit gemessen wurde. Unix (und Posix) Konvention ist es aus der Epoche zu messen (Anfang 1970, als Aix's Antwort erklärt).

Anzeigen einige Zeit in UTC oder Ortszeit, oder mit dem französischen revolutionären Kalender, oder mit dem Maya-Kalender oder einem anderen Kalender von welcher Kultur Sie interessiert sind, ändert diese Zeit nicht . Nur die Anzeige (oder die angezeigte Form) dieser Zeit ändert sich.

Es ist ein bisschen so, als würde man sagen, dass zwei , deux , 1 + 1 oder 2 oder 10b -with b bedeutet binary- sind alle Darstellungen der gleichen -Nummer.

Zurück zur Frage, die man-Seite von clock_gettime gibt die genaue Antwort auf die Frage. Es hängt von der clk_id ab, nach der du fragst, und für CLOCK_REALTIME wird die Zeit seit der Unix-Epoche gemessen. Für andere Uhren (z. B. CLOCK_MONOTONIC ) wird der verwendete Ursprung nicht angegeben.

(Ich bin ziemlich traurig überrascht über die Anzahl der Fragen hier, die sehr schnell beantwortet werden können, indem ich in den Mann schaue. Ich verstehe nicht die Logik von Menschen, die sich mehr Zeit nehmen Frage hier, dass zu schauen - einfach durch Eingabe von man clock_gettime auf ihrer Linux-Box - in die man-Seiten).

Der Begriff der Zeitzone ist nur relevant für struct tm , wie von localtime & amp; gmtime (und verwandte) Funktionen. Eine Zeit (zB einige time_t ) gemessen von der Epoche (wie das Ergebnis von Zeit (2) , < a href="http://linux.die.net/man/2/gettimeofday"> gettimeofday , clock_gettime mit CLOCK_REALTIME ) hat keine Zeitzone.

Die Unix-Epoche ist der 1. Januar 1970 0:00 UTC (nach Definition von (time_t)0 ), In meiner Zeitzone (MET = Paris / Frankreich) ist die gleiche Epoche Do 1. Januar 01:00:00 MET 1970.

    
Basile Starynkevitch 16.12.2011 13:19
quelle
0

es kommt darauf an ..

Wenn Sie clock_gettime(1) aufrufen, ist die Epoche wahrscheinlich die Zeit, zu der Ihr Linux gestartet wurde.

    
mykhal 04.12.2013 15:55
quelle

Tags und Links