time — Zeitfunktionen und -konvertierungen


Dieses Modul stellt verschiedene zeitbezogene Funktionen bereit. Verwandte Funktionalitäten finden Sie auch in den Modulen datetime und calendar.

Obwohl dieses Modul immer verfügbar ist, sind nicht alle Funktionen auf allen Plattformen verfügbar. Die meisten Funktionen, die in diesem Modul definiert sind, rufen C-Bibliotheksfunktionen der Plattform mit demselben Namen auf. Es kann manchmal hilfreich sein, die Plattformdokumentation zu konsultieren, da die Semantik dieser Funktionen zwischen den Plattformen variiert.

Eine Erklärung einiger Terminologie und Konventionen ist angebracht.

  • Die Epoche ist der Zeitpunkt, an dem die Zeit beginnt, der Rückgabewert von time.gmtime(0). Auf allen Plattformen ist dies der 1. Januar 1970, 00:00:00 (UTC).

  • Die Bezeichnung Sekunden seit der Epoche bezieht sich auf die Gesamtzahl der seit der Epoche vergangenen Sekunden, wobei typischerweise Schaltsekunden ausgeschlossen werden. Auf allen POSIX-konformen Plattformen werden Schaltsekunden von dieser Gesamtzahl ausgeschlossen.

  • Die Funktionen in diesem Modul verarbeiten möglicherweise keine Daten und Zeiten vor der Epoche oder weit in der Zukunft. Der zukünftige Endpunkt wird von der C-Bibliothek bestimmt; auf 32-Bit-Systemen liegt er typischerweise im Jahr 2038.

  • Die Funktion strptime() kann zweistellige Jahre bei Verwendung des Formatcodes %y parsen. Wenn zweistellige Jahre geparst werden, werden sie gemäß den POSIX- und ISO-C-Standards konvertiert: Werte von 69–99 werden auf 1969–1999 abgebildet, und Werte von 0–68 werden auf 2000–2068 abgebildet.

  • UTC ist die Koordinierte Weltzeit und hat die Greenwich Mean Time oder GMT als Grundlage der internationalen Zeitmessung abgelöst. Die Abkürzung UTC ist kein Fehler, sondern entspricht einem früheren, sprachunabhängigen Benennungsschema für Zeitstandards wie UT0, UT1 und UT2.

  • DST ist die Sommerzeit, eine Anpassung der Zeitzone um (normalerweise) eine Stunde während eines Teils des Jahres. DST-Regeln sind magisch (bestimmt durch lokales Recht) und können sich von Jahr zu Jahr ändern. Die C-Bibliothek verfügt über eine Tabelle mit den lokalen Regeln (oft wird diese für mehr Flexibilität aus einer Systemdatei gelesen) und ist in dieser Hinsicht die einzige Quelle der wahren Weisheit.

  • Die Genauigkeit der verschiedenen Echtzeitfunktionen kann geringer sein, als die Einheiten, in denen ihr Wert oder ihr Argument ausgedrückt wird, vermuten lassen. Zum Beispiel tickt die Uhr auf den meisten Unix-Systemen nur 50 oder 100 Mal pro Sekunde.

  • Andererseits ist die Genauigkeit von time() und sleep() besser als die ihrer Unix-Entsprechungen: Zeiten werden als Gleitkommazahlen ausgedrückt, time() gibt die genaueste verfügbare Zeit zurück (wobei gettimeofday() von Unix verwendet wird, wo verfügbar), und sleep() akzeptiert eine Zeit mit einem von Null verschiedenen Bruchteil (Unix select() wird zur Implementierung verwendet, wo verfügbar).

  • Der Zeitwert, wie er von gmtime(), localtime() und strptime() zurückgegeben und von asctime(), mktime() und strftime() akzeptiert wird, ist eine Sequenz von 9 Ganzzahlen. Die Rückgabewerte von gmtime(), localtime() und strptime() bieten auch Attributnamen für einzelne Felder.

    Siehe struct_time für eine Beschreibung dieser Objekte.

    Geändert in Version 3.3: Der Typ struct_time wurde erweitert, um die Attribute tm_gmtoff und tm_zone bereitzustellen, wenn die Plattform entsprechende struct tm-Mitglieder unterstützt.

    Geändert in Version 3.6: Die Attribute tm_gmtoff und tm_zone von struct_time sind jetzt auf allen Plattformen verfügbar.

  • Verwenden Sie die folgenden Funktionen, um zwischen Zeitdarstellungen zu konvertieren

    Von

    Nach

    Verwenden

    Sekunden seit der Epoche

    struct_time in UTC

    gmtime()

    Sekunden seit der Epoche

    struct_time in lokaler Zeit

    localtime()

    struct_time in UTC

    Sekunden seit der Epoche

    calendar.timegm()

    struct_time in lokaler Zeit

    Sekunden seit der Epoche

    mktime()

Funktionen

time.asctime([t])

Konvertiert ein Tupel oder ein struct_time, das eine Zeit darstellt, wie sie von gmtime() oder localtime() zurückgegeben wird, in eine Zeichenkette des folgenden Formats: 'Son Jun 20 23:21:05 1993'. Das Tagesfeld ist zwei Zeichen lang und bei einstelligen Tagen mit Leerzeichen aufgefüllt, z. B.: 'Mit Jun  9 04:26:40 1993'.

Wenn t nicht angegeben ist, wird die aktuelle Zeit verwendet, wie sie von localtime() zurückgegeben wird. Ländereinstellungsinformationen werden von asctime() nicht verwendet.

Hinweis

Im Gegensatz zur gleichnamigen C-Funktion fügt asctime() keinen abschließenden Zeilenumbruch hinzu.

time.pthread_getcpuclockid(thread_id)

Gibt die clk_id der threadspezifischen CPU-Zeitschaltuhr für die angegebene thread_id zurück.

Verwenden Sie threading.get_ident() oder das Attribut ident von threading.Thread-Objekten, um einen geeigneten Wert für thread_id zu erhalten.

Warnung

Das Übergeben einer ungültigen oder abgelaufenen thread_id kann zu undefiniertem Verhalten führen, wie z. B. einem Segmentierungsfehler.

Verfügbarkeit: Unix

Weitere Informationen finden Sie in der Manpage für pthread_getcpuclockid(3).

Hinzugefügt in Version 3.7.

time.clock_getres(clk_id)

Gibt die Auflösung (Genauigkeit) der angegebenen Uhr clk_id zurück. Siehe Uhr-ID-Konstanten für eine Liste akzeptierter Werte für clk_id.

Hinzugefügt in Version 3.3.

time.clock_gettime(clk_id) float

Gibt die Zeit der angegebenen Uhr clk_id zurück. Siehe Uhr-ID-Konstanten für eine Liste akzeptierter Werte für clk_id.

Verwenden Sie clock_gettime_ns(), um den Präzisionsverlust durch den float-Typ zu vermeiden.

Hinzugefügt in Version 3.3.

time.clock_gettime_ns(clk_id) int

Ähnlich wie clock_gettime(), gibt aber die Zeit in Nanosekunden zurück.

Hinzugefügt in Version 3.7.

time.clock_settime(clk_id, time: float)

Setzt die Zeit der angegebenen Uhr clk_id. Derzeit ist CLOCK_REALTIME der einzige akzeptierte Wert für clk_id.

Verwenden Sie clock_settime_ns(), um den Präzisionsverlust durch den float-Typ zu vermeiden.

Verfügbarkeit: Unix, nicht Android, nicht iOS.

Hinzugefügt in Version 3.3.

time.clock_settime_ns(clk_id, time: int)

Ähnlich wie clock_settime(), setzt aber die Zeit in Nanosekunden.

Verfügbarkeit: Unix, nicht Android, nicht iOS.

Hinzugefügt in Version 3.7.

time.ctime([secs])

Konvertiert eine in Sekunden seit der Epoche ausgedrückte Zeit in eine Zeichenkette des Formats: 'Son Jun 20 23:21:05 1993', die die lokale Zeit darstellt. Das Tagesfeld ist zwei Zeichen lang und bei einstelligen Tagen mit Leerzeichen aufgefüllt, z. B.: 'Mit Jun  9 04:26:40 1993'.

Wenn secs nicht angegeben ist oder None ist, wird die aktuelle Zeit verwendet, wie sie von time() zurückgegeben wird. ctime(secs) ist äquivalent zu asctime(localtime(secs)). Ländereinstellungsinformationen werden von ctime() nicht verwendet.

time.get_clock_info(name)

Ruft Informationen über die angegebene Uhr als Namespace-Objekt ab. Unterstützte Uhrnamen und die entsprechenden Funktionen zum Lesen ihres Werts sind

Das Ergebnis hat die folgenden Attribute

  • adjustable: True, wenn die Uhr vor- oder zurückgestellt werden kann, False andernfalls. Bezieht sich nicht auf schrittweise NTP-Rate-Anpassungen.

  • implementation: Der Name der zugrundeliegenden C-Funktion, die zum Abrufen des Uhrwerts verwendet wird. Mögliche Werte finden Sie unter Uhr-ID-Konstanten.

  • monotonic: True, wenn die Uhr nicht rückwärts laufen kann, False andernfalls

  • resolution: Die Auflösung der Uhr in Sekunden (float)

Hinzugefügt in Version 3.3.

time.gmtime([secs])

Konvertiert eine in Sekunden seit der Epoche ausgedrückte Zeit in ein struct_time in UTC, bei dem das dst-Flag immer Null ist. Wenn secs nicht angegeben ist oder None ist, wird die aktuelle Zeit verwendet, wie sie von time() zurückgegeben wird. Bruchteile von Sekunden werden ignoriert. Siehe oben für eine Beschreibung des struct_time-Objekts. Siehe calendar.timegm() für die Umkehrfunktion dieser Funktion.

time.localtime([secs])

Wie gmtime(), konvertiert aber in lokale Zeit. Wenn secs nicht angegeben ist oder None ist, wird die aktuelle Zeit verwendet, wie sie von time() zurückgegeben wird. Das dst-Flag wird auf 1 gesetzt, wenn die Sommerzeit für die angegebene Zeit gilt.

localtime() kann OverflowError auslösen, wenn der Zeitstempel außerhalb des Bereichs der von der plattformspezifischen C-Funktion localtime() oder gmtime() unterstützten Werte liegt, und OSError bei einem Fehler von localtime() oder gmtime(). Dies ist häufig auf Jahre zwischen 1970 und 2038 beschränkt.

time.mktime(t)

Dies ist die Umkehrfunktion von localtime(). Ihr Argument ist das struct_time oder ein volles 9-Tupel (da das dst-Flag benötigt wird; verwenden Sie -1 als dst-Flag, wenn es unbekannt ist), das die Zeit in *lokaler* Zeit, nicht UTC, ausdrückt. Es gibt eine Gleitkommazahl zurück, zur Kompatibilität mit time(). Wenn der Eingabewert nicht als gültige Zeit dargestellt werden kann, wird entweder OverflowError oder ValueError ausgelöst (abhängig davon, ob der ungültige Wert von Python oder den zugrunde liegenden C-Bibliotheken abgefangen wird). Das früheste Datum, für das es eine Zeit generieren kann, ist plattformabhängig.

time.monotonic() float

Gibt den Wert (in Bruchteilen von Sekunden) einer monotonen Uhr zurück, d. h. einer Uhr, die nicht rückwärts laufen kann. Die Uhr wird von Systemuhr-Updates nicht beeinflusst. Der Referenzpunkt des zurückgegebenen Werts ist undefiniert, sodass nur die Differenz zwischen den Ergebnissen zweier Aufrufe gültig ist.

Uhr

  • Unter Windows rufen Sie QueryPerformanceCounter() und QueryPerformanceFrequency() auf.

  • Unter macOS rufen Sie mach_absolute_time() und mach_timebase_info() auf.

  • Unter HP-UX rufen Sie gethrtime() auf.

  • Rufen Sie clock_gettime(CLOCK_HIGHRES) auf, falls verfügbar.

  • Andernfalls rufen Sie clock_gettime(CLOCK_MONOTONIC) auf.

Verwenden Sie monotonic_ns(), um den Präzisionsverlust durch den float-Typ zu vermeiden.

Hinzugefügt in Version 3.3.

Geändert in Version 3.5: Die Funktion ist jetzt immer verfügbar und die Uhr ist jetzt für alle Prozesse gleich.

Geändert in Version 3.10: Unter macOS ist die Uhr jetzt für alle Prozesse gleich.

time.monotonic_ns() int

Ähnlich wie monotonic(), gibt aber die Zeit in Nanosekunden zurück.

Hinzugefügt in Version 3.7.

time.perf_counter() float

Gibt den Wert (in Bruchteilen von Sekunden) eines Performance-Counters zurück, d. h. einer Uhr mit der höchsten verfügbaren Auflösung zur Messung kurzer Zeitspannen. Sie enthält auch die Zeit, die während des Schlafens verstrichen ist. Die Uhr ist für alle Prozesse gleich. Der Referenzpunkt des zurückgegebenen Werts ist undefiniert, sodass nur die Differenz zwischen den Ergebnissen zweier Aufrufe gültig ist.

CPython-Implementierungsdetail: In CPython wird dieselbe Uhr wie time.monotonic() verwendet und es handelt sich um eine monotone Uhr, d. h. eine Uhr, die nicht rückwärts laufen kann.

Verwenden Sie perf_counter_ns(), um den Präzisionsverlust durch den float-Typ zu vermeiden.

Hinzugefügt in Version 3.3.

Geändert in Version 3.10: Unter Windows ist die Uhr jetzt für alle Prozesse gleich.

Geändert in Version 3.13: Verwendet dieselbe Uhr wie time.monotonic().

time.perf_counter_ns() int

Ähnlich wie perf_counter(), gibt aber die Zeit in Nanosekunden zurück.

Hinzugefügt in Version 3.7.

time.process_time() float

Gibt den Wert (in Bruchteilen von Sekunden) der Summe der System- und Benutzer-CPU-Zeit des aktuellen Prozesses zurück. Die Zeit, die während des Schlafens verstrichen ist, wird nicht einbezogen. Sie ist per Definition prozessweit. Der Referenzpunkt des zurückgegebenen Werts ist undefiniert, sodass nur die Differenz zwischen den Ergebnissen zweier Aufrufe gültig ist.

Verwenden Sie process_time_ns(), um den Präzisionsverlust durch den float-Typ zu vermeiden.

Hinzugefügt in Version 3.3.

time.process_time_ns() int

Ähnlich wie process_time(), gibt aber die Zeit in Nanosekunden zurück.

Hinzugefügt in Version 3.7.

time.sleep(secs)

Setzt die Ausführung des aufrufenden Threads für die angegebene Anzahl von Sekunden aus. Das Argument kann eine Gleitkommazahl sein, um eine präzisere Schlafzeit anzugeben.

Wenn der Schlaf durch ein Signal unterbrochen wird und die Signalbehandlung keine Ausnahme auslöst, wird der Schlaf mit einer neu berechneten Timeout-Dauer neu gestartet.

Die Aussetzungszeit kann aufgrund der Planung anderer Aktivitäten im System beliebig länger als angefordert sein.

Windows-Implementierung

Unter Windows gibt der Thread den Rest seiner Zeitscheibe an jeden anderen Thread, der bereit ist, ausgeführt zu werden, ab, wenn secs Null ist. Wenn keine anderen Threads bereit sind, wird die Funktion sofort zurückgegeben und der Thread fährt mit der Ausführung fort. Unter Windows 8.1 und neuer verwendet die Implementierung einen Hochtontimer, der eine Auflösung von 100 Nanosekunden bietet. Wenn secs Null ist, wird Sleep(0) verwendet.

Unix-Implementierung

  • Verwendet clock_nanosleep(), falls verfügbar (Auflösung: 1 Nanosekunde);

  • Oder verwenden Sie nanosleep(), falls verfügbar (Auflösung: 1 Nanosekunde);

  • Oder verwenden Sie select() (Auflösung: 1 Mikrosekunde).

Hinweis

Um eine "No-Op" (keine Operation) zu emulieren, verwenden Sie pass anstelle von time.sleep(0).

Um die CPU freiwillig freizugeben, geben Sie eine Echtzeit- Scheduling-Richtlinie an und verwenden Sie stattdessen os.sched_yield().

Löst ein Auditing-Ereignis time.sleep mit dem Argument secs aus.

Geändert in Version 3.5: Die Funktion schläft nun mindestens secs, auch wenn der Schlaf durch ein Signal unterbrochen wird, es sei denn, der Signalhandler löst eine Ausnahme aus (siehe PEP 475 für die Begründung).

Geändert in Version 3.11: Unter Unix werden nun, falls verfügbar, die Funktionen clock_nanosleep() und nanosleep() verwendet. Unter Windows wird nun ein wartbarer Timer verwendet.

Geändert in Version 3.13: Löst ein Auditing-Ereignis aus.

time.strftime(format[, t])

Konvertiert ein Tupel oder struct_time, das eine Zeit darstellt, wie sie von gmtime() oder localtime() zurückgegeben wird, in einen String gemäß dem Argument format. Wenn t nicht angegeben ist, wird die aktuelle Zeit verwendet, wie sie von localtime() zurückgegeben wird. format muss ein String sein. ValueError wird ausgelöst, wenn ein Feld in t außerhalb des zulässigen Bereichs liegt.

0 ist ein gültiges Argument für jede Position im Zeit-Tupel; wenn es normalerweise ungültig ist, wird der Wert auf einen korrekten Wert gezwungen.

Die folgenden Direktiven können in den format-String eingebettet werden. Sie werden ohne die optionale Angabe von Feldbreite und Präzision angezeigt und durch die angegebenen Zeichen im Ergebnis von strftime() ersetzt.

Direktive

Bedeutung

Hinweise

%a

Abgekürzter Wochentagsname der Locale.

%A

Vollständiger Wochentagsname der Locale.

%b

Abgekürzter Monatsname der Locale.

%B

Vollständiger Monatsname der Locale.

%c

Angemessene Datums- und Zeitdarstellung der Locale.

%d

Tag des Monats als Dezimalzahl [01,31].

%f

Mikrosekunden als Dezimalzahl

[000000,999999].

(1)

%H

Stunde (24-Stunden-Format) als Dezimalzahl [00,23].

%I

Stunde (12-Stunden-Format) als Dezimalzahl [01,12].

%j

Tag des Jahres als Dezimalzahl [001,366].

%m

Monat als Dezimalzahl [01,12].

%M

Minute als Dezimalzahl [00,59].

%p

Locale-Entsprechung von AM oder PM.

(2)

%S

Sekunde als Dezimalzahl [00,61].

(3)

%U

Kalenderwoche des Jahres (Sonntag als erster Tag der Woche) als Dezimalzahl [00,53]. Alle Tage in einem neuen Jahr vor dem ersten Sonntag gelten als in Woche 0.

(4)

%u

Tag der Woche (Montag ist 1; Sonntag ist 7) als Dezimalzahl [1, 7].

%w

Wochentag als Dezimalzahl [0(Sonntag),6].

%W

Kalenderwoche des Jahres (Montag als erster Tag der Woche) als Dezimalzahl [00,53]. Alle Tage in einem neuen Jahr vor dem ersten Montag gelten als in Woche 0.

(4)

%x

Angemessene Datumsdarstellung der Locale.

%X

Angemessene Zeitdarstellung der Locale.

%y

Jahr ohne Jahrhundert als Dezimalzahl [00,99].

%Y

Jahr mit Jahrhundert als Dezimalzahl.

%z

Zeitzonen-Offset, der eine positive oder negative Zeitdifferenz zu UTC/GMT im Format +HHMM oder -HHMM angibt, wobei H für Dezimalstundenziffern und M für Dezimalminutenziffern steht [-23:59, +23:59]. [1]

%Z

Zeitzonenname (keine Zeichen, wenn keine Zeitzone existiert). Veraltet. [1]

%G

ISO 8601-Jahr (ähnlich wie %Y, folgt aber den Regeln für das ISO 8601-Kalenderjahr). Das Jahr beginnt mit der Woche, die den ersten Donnerstag des Kalenderjahres enthält.

%V

ISO 8601-Kalenderwoche (als Dezimalzahl [01,53]). Die erste Woche des Jahres ist diejenige, die den ersten Donnerstag des Jahres enthält. Wochen beginnen am Montag.

%%

Ein literales '%'-Zeichen.

Hinweise

  1. Die Format-Direktive %f gilt nur für strptime(), nicht für strftime(). Siehe jedoch auch datetime.datetime.strptime() und datetime.datetime.strftime(), wo die Format-Direktive %f für Mikrosekunden gilt.

  2. Wenn die Direktive %p mit der Funktion strptime() verwendet wird, beeinflusst sie nur das Ausgabe-Stundenfeld, wenn die Direktive %I zum Parsen der Stunde verwendet wird.

  1. Der Bereich ist tatsächlich 0 bis 61; der Wert 60 ist in Zeitstempeln, die Schaltsekunden darstellen, gültig, und der Wert 61 wird aus historischen Gründen unterstützt.

  2. Bei Verwendung mit der Funktion strptime() werden %U und %W nur in Berechnungen verwendet, wenn der Wochentag und das Jahr angegeben sind.

Hier ist ein Beispiel für ein Format für Daten, das mit dem im RFC 2822 Internet-E-Mail-Standard angegebenen Format kompatibel ist. [1]

>>> from time import gmtime, strftime
>>> strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime())
'Thu, 28 Jun 2001 14:17:15 +0000'

Zusätzliche Direktiven können auf bestimmten Plattformen unterstützt werden, aber nur die hier aufgeführten haben eine Bedeutung, die durch ANSI C standardisiert ist. Um die vollständige Menge der auf Ihrer Plattform unterstützten Formatcodes zu sehen, konsultieren Sie die Dokumentation zu strftime(3).

Auf einigen Plattformen kann eine optionale Angabe der Feldbreite und Präzision dem anfänglichen '%' einer Direktive in der folgenden Reihenfolge folgen; dies ist ebenfalls nicht portabel. Die Feldbreite beträgt normalerweise 2, außer für %j, wo sie 3 beträgt.

time.strptime(string[, format])

Parst einen String, der eine Zeit darstellt, gemäß einem Format. Der Rückgabewert ist ein struct_time, wie er von gmtime() oder localtime() zurückgegeben wird.

Der Parameter format verwendet dieselben Direktiven wie strftime(); er hat standardmäßig "%a %b %d %H:%M:%S %Y", was der Formatierung entspricht, die von ctime() zurückgegeben wird. Wenn string nicht gemäß format geparst werden kann oder überschüssige Daten nach dem Parsen enthält, wird ValueError ausgelöst. Die Standardwerte, die zum Auffüllen fehlender Daten verwendet werden, wenn keine genaueren Werte abgeleitet werden können, sind (1900, 1, 1, 0, 0, 0, 0, 1, -1). Sowohl string als auch format müssen Strings sein.

Zum Beispiel

>>> import time
>>> time.strptime("30 Nov 00", "%d %b %y")
time.struct_time(tm_year=2000, tm_mon=11, tm_mday=30, tm_hour=0, tm_min=0,
                 tm_sec=0, tm_wday=3, tm_yday=335, tm_isdst=-1)

Die Unterstützung für die Direktive %Z basiert auf den in tzname enthaltenen Werten und ob daylight wahr ist. Aus diesem Grund ist sie plattformspezifisch, abgesehen von der Erkennung von UTC und GMT, die immer bekannt sind (und als Zeitzonen ohne Sommerzeit gelten).

Nur die in der Dokumentation angegebenen Direktiven werden unterstützt. Da strftime() plattformspezifisch implementiert ist, kann sie manchmal mehr Direktiven anbieten als hier aufgeführt. strptime() ist jedoch unabhängig von jeder Plattform und unterstützt daher nicht notwendigerweise alle verfügbaren Direktiven, die nicht als unterstützt dokumentiert sind.

class time.struct_time

Der Typ der Zeitwertsequenz, die von gmtime(), localtime() und strptime() zurückgegeben wird. Es ist ein Objekt mit einer Named-Tuple-Schnittstelle: Werte können nach Index und nach Attributnamen zugegriffen werden. Die folgenden Werte sind vorhanden:

Index

Attribut

Werte

0

tm_year

(z.B. 1993)

1

tm_mon

Bereich [1, 12]

2

tm_mday

Bereich [1, 31]

3

tm_hour

Bereich [0, 23]

4

tm_min

Bereich [0, 59]

5

tm_sec

Bereich [0, 61]; siehe Hinweis (2) in strftime()

6

tm_wday

Bereich [0, 6]; Montag ist 0

7

tm_yday

Bereich [1, 366]

8

tm_isdst

0, 1 oder -1; siehe unten

N/A

tm_zone

Abkürzung des Zeitzonennamens

N/A

tm_gmtoff

Offset östlich von UTC in Sekunden

Beachten Sie, dass der Monatswert im Gegensatz zur C-Struktur im Bereich [1, 12] liegt, nicht [0, 11].

Bei Aufrufen von mktime() kann tm_isdst auf 1 gesetzt werden, wenn Sommerzeit in Kraft ist, und auf 0, wenn sie nicht in Kraft ist. Ein Wert von -1 zeigt an, dass dies nicht bekannt ist, und führt normalerweise dazu, dass der korrekte Zustand ausgefüllt wird.

Wenn ein Tupel mit falscher Länge an eine Funktion übergeben wird, die ein struct_time erwartet, oder wenn Elemente vom falschen Typ enthalten sind, wird ein TypeError ausgelöst.

time.time() float

Gibt die Zeit in Sekunden seit dem Epoche als Gleitkommazahl zurück. Die Behandlung von Schaltsekunden ist plattformabhängig. Unter Windows und den meisten Unix-Systemen werden Schaltsekunden nicht zur Zeit in Sekunden seit der Epoche gezählt. Dies wird üblicherweise als Unix-Zeit bezeichnet.

Beachten Sie, dass, obwohl die Zeit immer als Gleitkommazahl zurückgegeben wird, nicht alle Systeme eine Zeit mit besserer Präzision als 1 Sekunde liefern. Während diese Funktion normalerweise nicht abnehmende Werte zurückgibt, kann sie einen niedrigeren Wert als ein vorheriger Aufruf zurückgeben, wenn die Systemuhr zwischen den beiden Aufrufen zurückgestellt wurde.

Die von time() zurückgegebene Zahl kann in ein gängigeres Zeitformat (d. h. Jahr, Monat, Tag, Stunde usw.) in UTC konvertiert werden, indem sie an die Funktion gmtime() übergeben wird, oder in lokaler Zeit, indem sie an die Funktion localtime() übergeben wird. In beiden Fällen wird ein struct_time-Objekt zurückgegeben, von dem auf die Komponenten des Kalenderdatums als Attribute zugegriffen werden kann.

Uhr

  • Unter Windows wird GetSystemTimePreciseAsFileTime() aufgerufen.

  • Ruft clock_gettime(CLOCK_REALTIME) auf, falls verfügbar.

  • Andernfalls wird gettimeofday() aufgerufen.

Verwenden Sie time_ns(), um den Präzisionsverlust durch den float-Typ zu vermeiden.

Geändert in Version 3.13: Unter Windows wird GetSystemTimePreciseAsFileTime() anstelle von GetSystemTimeAsFileTime() aufgerufen.

time.time_ns() int

Ähnlich wie time(), gibt aber die Zeit als ganze Anzahl von Nanosekunden seit der Epoche zurück.

Hinzugefügt in Version 3.7.

time.thread_time() float

Gibt den Wert (in Bruchteilen von Sekunden) der Summe der System- und Benutzer-CPU-Zeit des aktuellen Threads zurück. Dies schließt die Zeit während des Schlafens nicht ein. Sie ist per Definition threadspezifisch. Der Referenzpunkt des zurückgegebenen Werts ist undefiniert, so dass nur die Differenz zwischen den Ergebnissen zweier Aufrufe im selben Thread gültig ist.

Verwenden Sie thread_time_ns(), um den Präzisionsverlust durch den float-Typ zu vermeiden.

Verfügbarkeit: Linux, Unix, Windows.

Unix-Systeme, die CLOCK_THREAD_CPUTIME_ID unterstützen.

Hinzugefügt in Version 3.7.

time.thread_time_ns() int

Ähnlich wie thread_time(), gibt aber die Zeit in Nanosekunden zurück.

Hinzugefügt in Version 3.7.

time.tzset()

Setzt die Zeitumrechnungsregeln zurück, die von den Bibliotheksroutinen verwendet werden. Die Umgebungsvariable TZ gibt an, wie dies geschieht. Sie setzt auch die Variablen tzname (aus der TZ-Umgebungsvariable), timezone (Sekunden ohne Sommerzeit westlich von UTC), altzone (Sekunden mit Sommerzeit westlich von UTC) und daylight (auf 0, wenn diese Zeitzone keine Sommerzeitregeln hat, oder auf ungleich Null, wenn es eine Zeit gibt, in der die Sommerzeit gilt).

Hinweis

Obwohl in vielen Fällen das Ändern der Umgebungsvariable TZ die Ausgabe von Funktionen wie localtime() beeinflussen kann, ohne tzset() aufzurufen, sollte auf dieses Verhalten nicht verlassen werden.

Die Umgebungsvariable TZ sollte keine Leerzeichen enthalten.

Das Standardformat der Umgebungsvariablen TZ ist (Leerzeichen zur besseren Lesbarkeit hinzugefügt)

std offset [dst [offset [,start[/time], end[/time]]]]

Wo die Komponenten sind

std und dst

Drei oder mehr alphanumerische Zeichen für die Zeitzonenabkürzungen. Diese werden in time.tzname übernommen.

Offset

Der Offset hat das Format: ± hh[:mm[:ss]]. Dies gibt den Wert an, der zur lokalen Zeit addiert wird, um UTC zu erhalten. Wenn er mit einem "-" beginnt, liegt die Zeitzone östlich des Nullmeridians; andernfalls westlich davon. Wenn nach dst kein Offset folgt, wird angenommen, dass die Sommerzeit eine Stunde vor der Standardzeit liegt.

start[/time], end[/time]

Gibt an, wann auf Sommerzeit umgeschaltet und zurückgekehrt wird. Das Format der Start- und Enddaten ist eines der folgenden:

Jn

Der Julianische Tag n (1 <= n <= 365). Schalttage werden nicht gezählt, daher ist in allen Jahren der 28. Februar Tag 59 und der 1. März Tag 60.

n

Der nullbasierte Julianische Tag (0 <= n <= 365). Schalttage werden gezählt, und es ist möglich, auf den 29. Februar zu verweisen.

Mm.n.d

Der d-te Tag (0 <= d <= 6) der Woche n des Monats m des Jahres (1 <= n <= 5, 1 <= m <= 12, wobei Woche 5 "der letzte d-te Tag im Monat m" bedeutet, der in die vierte oder fünfte Woche fallen kann). Woche 1 ist die erste Woche, in der der d-te Tag vorkommt. Tag Null ist ein Sonntag.

time hat das gleiche Format wie offset, mit der Ausnahme, dass kein führendes Vorzeichen ('-' oder '+') zulässig ist. Standardmäßig, wenn keine Zeit angegeben ist, ist dies 02:00:00.

>>> os.environ['TZ'] = 'EST+05EDT,M4.1.0,M10.5.0'
>>> time.tzset()
>>> time.strftime('%X %x %Z')
'02:07:36 05/08/03 EDT'
>>> os.environ['TZ'] = 'AEST-10AEDT-11,M10.5.0,M3.5.0'
>>> time.tzset()
>>> time.strftime('%X %x %Z')
'16:08:12 05/08/03 AEST'

Auf vielen Unix-Systemen (einschließlich *BSD, Linux, Solaris und Darwin) ist es bequemer, die Zoneinfo-Datenbank (tzfile(5)) des Systems zu verwenden, um die Zeitzonenregeln zu spezifizieren. Um dies zu tun, setzen Sie die Umgebungsvariable TZ auf den Pfad der gewünschten Zeitzonendatei, relativ zum Stammverzeichnis der 'zoneinfo'-Zeitzonendatenbank des Systems, die sich normalerweise unter /usr/share/zoneinfo befindet. Beispiele sind 'US/Eastern', 'Australia/Melbourne', 'Egypt' oder 'Europe/Amsterdam'.

>>> os.environ['TZ'] = 'US/Eastern'
>>> time.tzset()
>>> time.tzname
('EST', 'EDT')
>>> os.environ['TZ'] = 'Egypt'
>>> time.tzset()
>>> time.tzname
('EET', 'EEST')

Konstanten für Clock IDs

Diese Konstanten werden als Parameter für clock_getres() und clock_gettime() verwendet.

time.CLOCK_BOOTTIME

Identisch mit CLOCK_MONOTONIC, mit der Ausnahme, dass es auch jede Zeit einschließt, in der das System ausgesetzt war.

Dies ermöglicht Anwendungen, eine suspendierungsbewusste monotone Uhr zu erhalten, ohne sich mit den Komplikationen von CLOCK_REALTIME befassen zu müssen, die Diskontinuitäten aufweisen kann, wenn die Zeit mit settimeofday() oder ähnlichem geändert wird.

Verfügbarkeit: Linux >= 2.6.39.

Hinzugefügt in Version 3.7.

time.CLOCK_HIGHRES

Das Solaris-Betriebssystem verfügt über einen CLOCK_HIGHRES-Timer, der versucht, eine optimale Hardwarequelle zu nutzen und eine Auflösung nahe der Nanosekunde liefern kann. CLOCK_HIGHRES ist die nicht einstellbare Uhr mit hoher Auflösung.

Verfügbarkeit: Solaris.

Hinzugefügt in Version 3.3.

time.CLOCK_MONOTONIC

Uhr, die nicht eingestellt werden kann und eine monotone Zeit seit einem nicht spezifizierten Startpunkt darstellt.

Hinzugefügt in Version 3.3.

time.CLOCK_MONOTONIC_RAW

Ähnlich wie CLOCK_MONOTONIC, bietet aber Zugriff auf eine rohe, hardwarebasierte Zeit, die keiner NTP-Anpassung unterliegt.

Verfügbarkeit: Linux >= 2.6.28, macOS >= 10.12.

Hinzugefügt in Version 3.3.

time.CLOCK_MONOTONIC_RAW_APPROX

Ähnlich wie CLOCK_MONOTONIC_RAW, liest aber einen vom System beim Kontextwechsel zwischengespeicherten Wert und hat daher eine geringere Genauigkeit.

Verfügbarkeit: macOS >= 10.12.

Hinzugefügt in Version 3.13.

time.CLOCK_PROCESS_CPUTIME_ID

Hochauflösender Prozess-Timer von der CPU.

Hinzugefügt in Version 3.3.

time.CLOCK_PROF

Hochauflösender Prozess-Timer von der CPU.

Verfügbarkeit: FreeBSD, NetBSD >= 7, OpenBSD.

Hinzugefügt in Version 3.7.

time.CLOCK_TAI

Internationale Atomzeit

Das System muss über eine aktuelle Leap-Second-Tabelle verfügen, damit dies die richtige Antwort liefert. PTP- oder NTP-Software kann eine Leap-Second-Tabelle verwalten.

Verfügbarkeit: Linux.

Hinzugefügt in Version 3.9.

time.CLOCK_THREAD_CPUTIME_ID

Threadspezifische CPU-Zeit-Uhr.

Hinzugefügt in Version 3.3.

time.CLOCK_UPTIME

Zeit, deren absoluter Wert die Zeit ist, die das System läuft und nicht ausgesetzt ist, was eine genaue Messung der Betriebszeit, sowohl absolut als auch als Intervall, ermöglicht.

Verfügbarkeit: FreeBSD, OpenBSD >= 5.5.

Hinzugefügt in Version 3.7.

time.CLOCK_UPTIME_RAW

Uhr, die monoton inkrementiert, die Zeit seit einem beliebigen Punkt verfolgt, unbeeinflusst von Frequenz- oder Zeitanpassungen und nicht inkrementiert, während das System schläft.

Verfügbarkeit: macOS >= 10.12.

Hinzugefügt in Version 3.8.

time.CLOCK_UPTIME_RAW_APPROX

Ähnlich wie CLOCK_UPTIME_RAW, aber der Wert wird vom System bei Kontextwechseln zwischengespeichert und ist daher weniger genau.

Verfügbarkeit: macOS >= 10.12.

Hinzugefügt in Version 3.13.

Die folgende Konstante ist der einzige Parameter, der an clock_settime() übergeben werden kann.

time.CLOCK_REALTIME

Echtzeituhr. Das Einstellen dieser Uhr erfordert entsprechende Berechtigungen. Die Uhr ist für alle Prozesse gleich.

Hinzugefügt in Version 3.3.

Zeitzonenkonstanten

time.altzone

Der Offset der lokalen Sommerzeit-Zeitzone, in Sekunden westlich von UTC, falls definiert. Dieser ist negativ, wenn die lokale Sommerzeit-Zeitzone östlich von UTC liegt (wie in Westeuropa, einschließlich des Vereinigten Königreichs). Verwenden Sie dies nur, wenn daylight ungleich Null ist. Siehe Hinweis unten.

time.daylight

Ungleich Null, wenn eine Sommerzeit-Zeitzone definiert ist. Siehe Hinweis unten.

time.timezone

Der Offset der lokalen (nicht-Sommerzeit) Zeitzone, in Sekunden westlich von UTC (negativ in den meisten Teilen Westeuropas, positiv in den USA, Null im Vereinigten Königreich). Siehe Hinweis unten.

time.tzname

Ein Tupel aus zwei Zeichenketten: Die erste ist der Name der lokalen Nicht-Sommerzeit-Zeitzone, die zweite ist der Name der lokalen Sommerzeit-Zeitzone. Wenn keine Sommerzeit-Zeitzone definiert ist, sollte die zweite Zeichenkette nicht verwendet werden. Siehe Hinweis unten.

Hinweis

Für die oben genannten Zeitzonenkonstanten (altzone, daylight, timezone und tzname) wird der Wert durch die Zeitzonenregeln bestimmt, die zum Zeitpunkt des Modul-Ladens oder zum letzten Aufruf von tzset() in Kraft waren, und kann für Zeiten in der Vergangenheit falsch sein. Es wird empfohlen, die Ergebnisse tm_gmtoff und tm_zone aus localtime() zu verwenden, um Zeitzoneninformationen zu erhalten.

Siehe auch

Modul datetime

Objektorientiertere Schnittstelle zu Daten und Zeiten.

Modul locale

Internationalisierungsdienste. Die Locale-Einstellung beeinflusst die Interpretation vieler Format-Spezifizierer in strftime() und strptime().

Modul calendar

Allgemeine kalenderbezogene Funktionen. timegm() ist die Umkehrung von gmtime() aus diesem Modul.

Fußnoten