time — Zeitzugriff und Zeitumrechnungen¶
Dieses Modul stellt verschiedene Funktionen rund um die Zeit bereit. Verwandte Funktionalität findest du auch in den Modulen datetime und calendar.
Dieses Modul ist zwar immer verfügbar, aber nicht alle Funktionen sind auf allen Plattformen verfügbar. Die meisten der in diesem Modul festgelegten Funktionen rufen Funktionen gleichen Namens aus der C-Bibliothek der Plattform auf. Manchmal ist es hilfreich, die Dokumentation der Plattform zu Rate zu ziehen, denn die Bedeutung dieser Funktionen unterscheidet sich von Plattform zu Plattform.
Einige Begriffe und Vereinbarungen sind hier zu erklären.
Die Epoche ist der Zeitpunkt, an dem die Zeit beginnt, der Rückgabewert von
time.gmtime(0). Auf allen Plattformen ist das der 1. Januar 1970, 00:00:00 (UTC).
Der Begriff Sekunden seit der Epoche bezeichnet die Gesamtzahl der seit der Epoche verstrichenen Sekunden, üblicherweise ohne Schaltsekunden (leap seconds). Auf allen POSIX-konformen Plattformen sind Schaltsekunden aus dieser Summe ausgenommen.
Die Funktionen in diesem Modul behandeln Datums- und Zeitangaben vor der Epoche (epoch) oder weit in der Zukunft möglicherweise nicht. Wo die Grenze in der Zukunft liegt, bestimmt die C-Bibliothek. Auf 32-Bit-Systemen liegt sie üblicherweise im Jahr 2038.
Die Funktion
strptime()kann zweistellige Jahreszahlen verarbeiten, wenn ihr der Formatbezeichner%yübergeben wird. Zweistellige Jahreszahlen werden nach den Standards POSIX und ISO C umgerechnet: Die Werte 69–99 werden auf 1969–1999 abgebildet, die Werte 0–68 auf 2000–2068.
UTC ist Coordinated Universal Time und hat Greenwich Mean Time beziehungsweise GMT als Grundlage der internationalen Zeitmessung abgelöst. Das Akronym UTC ist kein Fehler, sondern folgt einem früheren, sprachunabhängigen Benennungsschema für Zeitstandards wie UT0, UT1 und UT2.
DST steht für Daylight Saving Time, die Sommerzeit – eine Verschiebung der Zeitzone um (meist) eine Stunde während eines Teils des Jahres. Die DST-Regeln sind magisch (sie werden vom örtlichen Recht bestimmt) und können sich von Jahr zu Jahr ändern. Die C-Bibliothek hat eine Tabelle mit den örtlichen Regeln (der Flexibilität zuliebe wird sie oft aus einer Systemdatei gelesen) und ist in dieser Hinsicht die einzige Quelle Wahrer Weisheit.
Die Genauigkeit der verschiedenen Echtzeitfunktionen kann geringer sein, als es die Einheit nahelegt, in der ihr Wert oder Argument angegeben ist. Auf den meisten Unix-Systemen „tickt“ die Uhr zum Beispiel nur 50- oder 100-mal pro Sekunde.
Andererseits ist die Genauigkeit von
time()undsleep()besser als die ihrer Unix-Gegenstücke: Zeiten werden als Gleitkommazahlen angegeben,time()gibt die genaueste verfügbare Zeit zurück (wo vorhanden über Unixgettimeofday()), undsleep()nimmt eine Zeit mit einem Bruchteil ungleich null an (wo vorhanden wird das über Unixselect()umgesetzt).Der Zeitwert, den
gmtime(),localtime()undstrptime()zurückgeben und denasctime(),mktime()undstrftime()annehmen, ist eine Folge aus 9 ganzen Zahlen. Die Rückgabewerte vongmtime(),localtime()undstrptime()bieten außerdem Attributnamen für die einzelnen Felder.Eine Beschreibung dieser Objekte findest du unter
struct_time.Geändert in Version 3.3: Der Typ
struct_timewurde um die Attributetm_gmtoffundtm_zoneerweitert, sofern die Plattform die entsprechenden Member vonstruct tmunterstützt.Geändert in Version 3.6: Die Attribute
tm_gmtoffundtm_zonevonstruct_timesind jetzt auf allen Plattformen verfügbar.Verwende die folgenden Funktionen, um zwischen Zeitdarstellungen umzurechnen:
Von
Nach
Verwende
Sekunden seit der Epoche
struct_timein UTCSekunden seit der Epoche
struct_timein Ortszeitstruct_timein UTCSekunden seit der Epoche
struct_timein OrtszeitSekunden seit der Epoche
Funktionen¶
- time.asctime([time_tuple])¶
Wandelt ein Tupel oder ein
struct_time, das eine Zeit so darstellt, wiegmtime()oderlocaltime()sie zurückgeben, in eine Zeichenkette der folgenden Form um:'Sun Jun 20 23:21:05 1993'. Das Tagesfeld ist zwei Zeichen breit und wird bei einstelligem Tag mit einem Leerzeichen aufgefüllt, zum Beispiel:'Wed Jun 9 04:26:40 1993'.Ist time_tuple nicht angegeben, wird die aktuelle Zeit verwendet, wie
localtime()sie zurückgibt.asctime()verwendet keine Angaben aus dem Gebietsschema.Bemerkung
Anders als die C-Funktion gleichen Namens fügt
asctime()keinen abschließenden Zeilenumbruch an.
- time.pthread_getcpuclockid(thread_id, /)¶
Gibt die clk_id der threadspezifischen CPU-Zeit-Uhr für den angegebenen thread_id zurück.
Verwende
threading.get_ident()oder das Attributidentvonthreading.Thread-Objekten, um einen passenden Wert für thread_id zu bekommen.Warnung
Ein ungültiger oder abgelaufener thread_id kann zu undefiniertem Verhalten führen, etwa zu einem Speicherzugriffsfehler.
Verfügbarkeit: Unix
Weitere Informationen stehen in der Man-Page zu pthread_getcpuclockid(3).
Added in version 3.7.
- time.clock_getres(clk_id, /)¶
Gibt die Auflösung (Genauigkeit) der angegebenen Uhr clk_id zurück. Eine Liste der zulässigen Werte für clk_id steht unter Konstanten für Uhrenkennungen.
Verfügbarkeit: Unix.
Added in version 3.3.
- time.clock_gettime(clk_id, /) float¶
Gibt die Zeit der angegebenen Uhr clk_id zurück. Eine Liste der zulässigen Werte für clk_id steht unter Konstanten für Uhrenkennungen.
Verwende
clock_gettime_ns(), um den Genauigkeitsverlust durch den Typfloatzu vermeiden.Verfügbarkeit: Unix.
Added in version 3.3.
- time.clock_gettime_ns(clk_id, /) int¶
Wie
clock_gettime(), gibt die Zeit aber in Nanosekunden zurück.Verfügbarkeit: Unix.
Added in version 3.7.
- time.clock_settime(clk_id, time, /)¶
Setzt die Zeit der angegebenen Uhr clk_id. Derzeit ist
CLOCK_REALTIMEder einzige zulässige Wert für clk_id.Verwende
clock_settime_ns(), um den Genauigkeitsverlust durch den Typfloatzu vermeiden.Verfügbarkeit: Unix, not Android, not iOS.
Added in version 3.3.
Geändert in Version 3.15: Nimmt jede reelle Zahl als time an, nicht nur Ganz- oder Gleitkommazahlen.
- time.clock_settime_ns(clk_id, time: int, /)¶
Wie
clock_settime(), setzt die Zeit aber in Nanosekunden.Verfügbarkeit: Unix, not Android, not iOS.
Added in version 3.7.
- time.ctime(seconds=None, /)¶
Wandelt eine in Sekunden seit der Epoche (epoch) angegebene Zeit in eine Zeichenkette der Form
'Sun Jun 20 23:21:05 1993'um, die die Ortszeit darstellt. Das Tagesfeld ist zwei Zeichen breit und wird bei einstelligem Tag mit einem Leerzeichen aufgefüllt, zum Beispiel:'Wed Jun 9 04:26:40 1993'.Ist seconds nicht angegeben oder
None, wird die aktuelle Zeit verwendet, wietime()sie zurückgibt.ctime(seconds)entsprichtasctime(localtime(seconds)).ctime()verwendet keine Angaben aus dem Gebietsschema.Geändert in Version 3.15: Nimmt jede reelle Zahl an, nicht nur Ganz- oder Gleitkommazahlen.
- time.get_clock_info(name, /)¶
Liefert Informationen über die angegebene Uhr als Namensraumobjekt. Die unterstützten Uhrennamen und die zugehörigen Funktionen, die ihren Wert lesen, sind:
'monotonic':time.monotonic()'perf_counter':time.perf_counter()'process_time':time.process_time()'thread_time':time.thread_time()'time':time.time()
Das Ergebnis hat die folgenden Attribute:
adjustable:
True, wenn die Uhr so gesetzt werden kann, dass sie in der Zeit vor- oder zurückspringt, sonstFalse. Bezieht sich nicht auf allmähliche NTP-Ratenanpassungen.implementation: Der Name der zugrunde liegenden C-Funktion, mit der der Wert der Uhr geholt wird. Die möglichen Werte stehen unter Konstanten für Uhrenkennungen.
monotonic:
True, wenn die Uhr nicht zurückgehen kann, sonstFalseresolution: Die Auflösung der Uhr in Sekunden (
float)
Added in version 3.3.
- time.gmtime(seconds=None, /)¶
Wandelt eine in Sekunden seit der Epoche (epoch) angegebene Zeit in ein
struct_timein UTC um, bei dem das dst-Flag immer null ist. Ist seconds nicht angegeben oderNone, wird die aktuelle Zeit verwendet, wietime()sie zurückgibt. Bruchteile einer Sekunde werden nicht beachtet. Eine Beschreibung desstruct_time-Objekts steht weiter oben. Die Umkehrung dieser Funktion istcalendar.timegm().Geändert in Version 3.15: Nimmt jede reelle Zahl an, nicht nur Ganz- oder Gleitkommazahlen.
- time.localtime(seconds=None, /)¶
Wie
gmtime(), rechnet aber in die Ortszeit um. Ist seconds nicht angegeben oderNone, wird die aktuelle Zeit verwendet, wietime()sie zurückgibt. Das dst-Flag wird auf1gesetzt, wenn für die angegebene Zeit die Sommerzeit gilt.localtime()kannOverflowErrorauslösen, wenn der Zeitstempel außerhalb des Wertebereichs liegt, den die C-Funktionenlocaltime()odergmtime()der Plattform unterstützen, undOSError, wennlocaltime()odergmtime()fehlschlägt. Häufig ist dieser Bereich auf die Jahre zwischen 1970 und 2038 beschränkt.Geändert in Version 3.15: Nimmt jede reelle Zahl an, nicht nur Ganz- oder Gleitkommazahlen.
- time.mktime(time_tuple, /)¶
Das ist die Umkehrfunktion von
localtime(). Ihr Argument ist dasstruct_timeoder das vollständige 9-Tupel (weil das dst-Flag gebraucht wird – verwende-1als dst-Flag, wenn es unbekannt ist), das die Zeit in Ortszeit angibt, nicht in UTC. Sie gibt zur Verträglichkeit mittime()eine Gleitkommazahl zurück. Lässt sich der Eingabewert nicht als gültige Zeit darstellen, wird entwederOverflowErroroderValueErrorausgelöst (je nachdem, ob Python oder die zugrunde liegenden C-Bibliotheken den ungültigen Wert abfangen). Das früheste Datum, für das sie eine Zeit erzeugen kann, hängt von der Plattform ab.
- time.monotonic() float¶
Gibt den Wert (in Sekundenbruchteilen) einer monotonen Uhr zurück, also einer Uhr, die nicht zurückgehen kann. Die Uhr wird von Aktualisierungen der Systemuhr nicht beeinflusst. Der Bezugspunkt des zurückgegebenen Werts ist undefiniert, deshalb ist nur die Differenz zwischen den Ergebnissen zweier Aufrufe gültig.
Uhr:
Unter Windows werden
QueryPerformanceCounter()undQueryPerformanceFrequency()aufgerufen.Unter macOS werden
mach_absolute_time()undmach_timebase_info()aufgerufen.Unter HP-UX wird
gethrtime()aufgerufen.Ruft
clock_gettime(CLOCK_HIGHRES)auf, sofern vorhanden.Andernfalls wird
clock_gettime(CLOCK_MONOTONIC)aufgerufen.
Verwende
monotonic_ns(), um den Genauigkeitsverlust durch den Typfloatzu vermeiden.Added 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 dieselbe.
Geändert in Version 3.10: Unter macOS ist die Uhr jetzt für alle Prozesse dieselbe.
- time.monotonic_ns() int¶
Wie
monotonic(), gibt die Zeit aber in Nanosekunden zurück.Added in version 3.7.
- time.perf_counter() float¶
Gibt den Wert (in Sekundenbruchteilen) eines Leistungszählers zurück, also einer Uhr mit der höchsten verfügbaren Auflösung, um eine kurze Dauer zu messen. Die Zeit, die während eines Schlafens verstreicht, ist eingeschlossen. Die Uhr ist für alle Prozesse dieselbe. Der Bezugspunkt des zurückgegebenen Werts ist undefiniert, deshalb ist nur die Differenz zwischen den Ergebnissen zweier Aufrufe gültig.
Verwendet unter CPython dieselbe Uhr wie
time.monotonic()und ist eine monotone Uhr, also eine Uhr, die nicht zurückgehen kann.Verwende
perf_counter_ns(), um den Genauigkeitsverlust durch den Typfloatzu vermeiden.Added in version 3.3.
Geändert in Version 3.10: Unter Windows ist die Uhr jetzt für alle Prozesse dieselbe.
Geändert in Version 3.13: Verwendet dieselbe Uhr wie
time.monotonic().
- time.perf_counter_ns() int¶
Wie
perf_counter(), gibt die Zeit aber in Nanosekunden zurück.Added in version 3.7.
- time.process_time() float¶
Gibt den Wert (in Sekundenbruchteilen) der Summe aus System- und Benutzer-CPU-Zeit des aktuellen Prozesses zurück. Die Zeit, die während eines Schlafens verstreicht, ist nicht eingeschlossen. Sie gilt per Definition für den gesamten Prozess. Der Bezugspunkt des zurückgegebenen Werts ist undefiniert, deshalb ist nur die Differenz zwischen den Ergebnissen zweier Aufrufe gültig.
Verwende
process_time_ns(), um den Genauigkeitsverlust durch den Typfloatzu vermeiden.Added in version 3.3.
- time.process_time_ns() int¶
Wie
process_time(), gibt die Zeit aber in Nanosekunden zurück.Added in version 3.7.
- time.sleep(seconds, /)¶
Setzt die Ausführung des aufrufenden Threads für die angegebene Anzahl Sekunden aus. Das Argument darf auch eine nicht ganze Zahl sein, um eine genauere Schlafdauer anzugeben.
Wird das Schlafen von einem Signal unterbrochen und löst der Signalhandler keine Ausnahme aus, beginnt das Schlafen mit neu berechneter Restzeit erneut.
Die Aussetzdauer kann um einen beliebigen Betrag länger sein als angefordert, weil im System andere Aktivitäten eingeplant werden.
Windows-Implementierung
Ist seconds unter Windows null, gibt der Thread den Rest seiner Zeitscheibe an jeden anderen lauffähigen Thread ab. Gibt es keine anderen lauffähigen Threads, kehrt die Funktion sofort zurück, und der Thread läuft weiter. Unter Windows 10 und neuer verwendet die Implementierung einen hochauflösenden Zeitgeber, der eine Auflösung von 100 Nanosekunden bietet. Ist seconds null, wird
Sleep(0)verwendet.Unix-Implementierung
Verwendet
clock_nanosleep(), sofern vorhanden (Auflösung: 1 Nanosekunde).Oder verwendet
nanosleep(), sofern vorhanden (Auflösung: 1 Nanosekunde).Oder verwendet
select()(Auflösung: 1 Mikrosekunde).
Bemerkung
Um einen Leerbefehl nachzubilden, verwende
passstatttime.sleep(0).Um die CPU freiwillig abzugeben, gib eine Ablaufplanungsstrategie für Echtzeit an und verwende stattdessen
os.sched_yield().Löst ein Auditing-Ereignis
time.sleepmit dem Argumentsecondsaus.Geändert in Version 3.5: Die Funktion schläft jetzt mindestens seconds, auch wenn das Schlafen von einem Signal unterbrochen wird, außer wenn der Signalhandler eine Ausnahme auslöst (die Begründung steht in PEP 475).
Geändert in Version 3.11: Unter Unix werden jetzt die Funktionen
clock_nanosleep()undnanosleep()verwendet, sofern vorhanden. Unter Windows wird jetzt ein wartbarer Zeitgeber verwendet.Geändert in Version 3.13: Löst ein Auditing-Ereignis aus.
Geändert in Version 3.15: Nimmt jede reelle Zahl an, nicht nur Ganz- oder Gleitkommazahlen.
- time.strftime(format[, time_tuple])¶
Wandelt ein Tupel oder ein
struct_time, das eine Zeit so darstellt, wiegmtime()oderlocaltime()sie zurückgeben, in eine Zeichenkette um, wie das Argument format sie angibt. Ist time_tuple nicht angegeben, wird die aktuelle Zeit verwendet, wielocaltime()sie zurückgibt. format muss eine Zeichenkette sein. Liegt ein Feld in time_tuple außerhalb des zulässigen Bereichs, wirdValueErrorausgelöst.0 ist an jeder Stelle des Zeittupels ein zulässiges Argument. Ist der Wert dort normalerweise unzulässig, wird er auf einen richtigen Wert gezwungen.
Die folgenden Formatbezeichner können in die Zeichenkette format eingebettet werden. Sie sind hier ohne die wahlfreie Angabe von Feldbreite und Genauigkeit aufgeführt und werden im Ergebnis von
strftime()durch die angegebenen Zeichen ersetzt:Formatbezeichner
Bedeutung
Hinweise
%aAbgekürzter Wochentagsname des Gebietsschemas.
%AVollständiger Wochentagsname des Gebietsschemas.
%bAbgekürzter Monatsname des Gebietsschemas.
%BVollständiger Monatsname des Gebietsschemas.
%cPassende Datums- und Zeitdarstellung des Gebietsschemas.
%dTag des Monats als Dezimalzahl [01,31].
%fMikrosekunden als Dezimalzahl [000000,999999].
(1)
%HStunde (24-Stunden-Zählung) als Dezimalzahl [00,23].
%IStunde (12-Stunden-Zählung) als Dezimalzahl [01,12].
%jTag des Jahres als Dezimalzahl [001,366].
%mMonat als Dezimalzahl [01,12].
%MMinute als Dezimalzahl [00,59].
%pEntsprechung des Gebietsschemas für AM oder PM.
(2)
%SSekunde als Dezimalzahl [00,61].
(3)
%UWochennummer des Jahres (Sonntag als erster Tag der Woche) als Dezimalzahl [00,53]. Alle Tage eines neuen Jahres vor dem ersten Sonntag gelten als Woche 0.
(4)
%uTag der Woche (Montag ist 1, Sonntag ist 7) als Dezimalzahl [1, 7].
%wWochentag als Dezimalzahl [0(Sonntag),6].
%WWochennummer des Jahres (Montag als erster Tag der Woche) als Dezimalzahl [00,53]. Alle Tage eines neuen Jahres vor dem ersten Montag gelten als Woche 0.
(4)
%xPassende Datumsdarstellung des Gebietsschemas.
%XPassende Zeitdarstellung des Gebietsschemas.
%yJahr ohne Jahrhundert als Dezimalzahl [00,99].
%YJahr mit Jahrhundert als Dezimalzahl.
%zZeitzonen-Offset, der eine positive oder negative Zeitdifferenz zu UTC/GMT in der Form +HHMM oder -HHMM angibt, wobei H dezimale Stundenstellen und M dezimale Minutenstellen darstellt [-23:59, +23:59]. [1]
%ZName der Zeitzone (keine Zeichen, wenn keine Zeitzone vorhanden ist). Veraltet. [1]
%GISO-8601-Jahr (ähnlich
%Y, folgt aber den Regeln für das Kalenderjahr nach ISO 8601). Das Jahr beginnt mit der Woche, die den ersten Donnerstag des Kalenderjahres enthält.%VWochennummer nach ISO 8601 (als Dezimalzahl [01,53]). Die erste Woche des Jahres ist die, die den ersten Donnerstag des Jahres enthält. Wochen beginnen am Montag.
%%Ein wörtliches Zeichen
'%'.Hinweise:
Der Formatbezeichner
%fgilt nur fürstrptime(), nicht fürstrftime(). Siehe aber auchdatetime.datetime.strptime()unddatetime.datetime.strftime(), wo der Formatbezeichner%ffür Mikrosekunden gilt.Zusammen mit der Funktion
strptime()verwendet wirkt sich der Formatbezeichner%pnur dann auf das Stundenfeld der Ausgabe aus, wenn die Stunde mit dem Formatbezeichner%Izerlegt wird.
Der Bereich ist tatsächlich
0bis61. Der Wert60ist in Zeitstempeln gültig, die Schaltsekunden (leap seconds) darstellen, und der Wert61wird aus historischen Gründen unterstützt.Zusammen mit der Funktion
strptime()verwendet werden%Uund%Wnur dann in Berechnungen einbezogen, wenn der Wochentag und das Jahr angegeben sind.
Hier ein Beispiel, ein Format für Datumsangaben, das mit dem im Internet-E-Mail-Standard RFC 5322 angegebenen verträglich 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'
Auf bestimmten Plattformen können weitere Formatbezeichner unterstützt werden, aber nur die hier aufgeführten haben eine durch ANSI C standardisierte Bedeutung. Den vollständigen Satz der auf deiner Plattform unterstützten Formatbezeichner findest du in der Dokumentation zu strftime(3).
Auf einigen Plattformen darf eine wahlfreie Angabe von Feldbreite und Genauigkeit unmittelbar auf das einleitende
'%'eines Formatbezeichners folgen, in der folgenden Reihenfolge. Auch das ist nicht portabel. Die Feldbreite ist normalerweise 2, außer bei%j, wo sie 3 ist.
- time.strptime(string[, format])¶
Zerlegt eine Zeichenkette, die eine Zeit darstellt, nach einem Format. Der Rückgabewert ist ein
struct_time, wiegmtime()oderlocaltime()es zurückgeben.Der Parameter format verwendet dieselben Formatbezeichner wie
strftime(). Voreingestellt ist"%a %b %d %H:%M:%S %Y", was der Formatierung entspricht, diectime()zurückgibt. Lässt sich string nicht nach format zerlegen oder enthält es nach dem Zerlegen überzählige Daten, wirdValueErrorausgelöst. Die Vorgabewerte, mit denen fehlende Daten aufgefüllt 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 Zeichenketten 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 den Formatbezeichner
%Zberuht auf den Werten intznameund darauf, obdaylightwahr ist. Deshalb ist sie plattformspezifisch, außer beim Erkennen von UTC und GMT, die immer bekannt sind (und als Zeitzonen ohne Sommerzeit gelten).Unterstützt werden nur die in der Dokumentation angegebenen Formatbezeichner. Weil
strftime()je Plattform umgesetzt ist, kann es manchmal mehr Formatbezeichner anbieten als die hier aufgeführten.strptime()ist aber von jeder Plattform unabhängig und unterstützt deshalb nicht zwangsläufig alle verfügbaren Formatbezeichner, die nicht als unterstützt dokumentiert sind.
- class time.struct_time¶
Der Typ der Zeitwertfolge, die
gmtime(),localtime()undstrptime()zurückgeben. Es ist ein Objekt mit der Schnittstelle eines benannten Tupels: Auf die Werte kann über den Index und über den Attributnamen zugegriffen werden. Die folgenden Werte sind vorhanden:Index
Attribut
Werte
0
- tm_year¶
(zum Beispiel 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 (3) bei
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)
entfällt
- tm_zone¶
Abkürzung des Zeitzonennamens
entfällt
- tm_gmtoff¶
Offset östlich von UTC in Sekunden
Beachte, dass der Monatswert anders als in der C-Struktur im Bereich [1, 12] liegt, nicht [0, 11].
Bei Aufrufen von
mktime()darftm_isdstauf 1 gesetzt werden, wenn die Sommerzeit gilt, und auf 0, wenn sie nicht gilt. Der Wert -1 gibt an, dass das nicht bekannt ist, und führt üblicherweise dazu, dass der richtige Zustand eingesetzt wird.Wird ein Tupel falscher Länge an eine Funktion übergeben, die ein
struct_timeerwartet, oder hat es Elemente falschen Typs, wirdTypeErrorausgelöst.
- time.time() float¶
Gibt die Zeit in Sekunden seit der Epoche (epoch) als Gleitkommazahl zurück. Wie Schaltsekunden (leap seconds) behandelt werden, hängt von der Plattform ab. Unter Windows und auf den meisten Unix-Systemen zählen die Schaltsekunden nicht zur Zeit in Sekunden seit der Epoche (epoch). Das wird üblicherweise Unix-Zeit genannt.
Beachte, dass die Zeit zwar immer als Gleitkommazahl zurückgegeben wird, aber nicht alle Systeme die Zeit mit einer besseren Genauigkeit als 1 Sekunde liefern. Diese Funktion gibt normalerweise nicht abnehmende Werte zurück, kann aber einen kleineren Wert als bei einem vorherigen Aufruf zurückgeben, wenn die Systemuhr zwischen den beiden Aufrufen zurückgestellt wurde.
Die Zahl, die
time()zurückgibt, lässt sich in ein gebräuchlicheres Zeitformat (also Jahr, Monat, Tag, Stunde und so weiter) umwandeln: in UTC, indem du sie an die Funktiongmtime()übergibst, oder in Ortszeit, indem du sie an die Funktionlocaltime()übergibst. In beiden Fällen wird einstruct_time-Objekt zurückgegeben, über dessen Attribute auf die Bestandteile des Kalenderdatums zugegriffen werden kann.Uhr:
Unter Windows wird
GetSystemTimePreciseAsFileTime()aufgerufen.Ruft
clock_gettime(CLOCK_REALTIME)auf, sofern vorhanden.Andernfalls wird
gettimeofday()aufgerufen.
Verwende
time_ns(), um den Genauigkeitsverlust durch den Typfloatzu vermeiden.
Geändert in Version 3.13: Ruft unter Windows GetSystemTimePreciseAsFileTime() statt GetSystemTimeAsFileTime() auf.
- time.time_ns() int¶
Wie
time(), gibt die Zeit aber als ganze Zahl von Nanosekunden seit der Epoche (epoch) zurück.Added in version 3.7.
- time.thread_time() float¶
Gibt den Wert (in Sekundenbruchteilen) der Summe aus System- und Benutzer-CPU-Zeit des aktuellen Threads zurück. Die Zeit, die während eines Schlafens verstreicht, ist nicht eingeschlossen. Sie gilt per Definition nur für diesen Thread. Der Bezugspunkt des zurückgegebenen Werts ist undefiniert, deshalb ist nur die Differenz zwischen den Ergebnissen zweier Aufrufe im selben Thread gültig.
Verwende
thread_time_ns(), um den Genauigkeitsverlust durch den Typfloatzu vermeiden.Verfügbarkeit: Linux, Unix, Windows.
Unix-Systeme, die
CLOCK_THREAD_CPUTIME_IDunterstützen.Added in version 3.7.
- time.thread_time_ns() int¶
Wie
thread_time(), gibt die Zeit aber in Nanosekunden zurück.Added in version 3.7.
- time.tzset()¶
Setzt die Regeln zur Zeitumrechnung zurück, die die Routinen der Bibliothek verwenden. Die Umgebungsvariable
TZgibt an, wie das geschieht. Sie setzt außerdem die Variablentzname(aus der UmgebungsvariablenTZ),timezone(Sekunden westlich von UTC ohne Sommerzeit),altzone(Sekunden westlich von UTC mit Sommerzeit) unddaylight(auf 0, wenn diese Zeitzone keine Sommerzeitregeln hat, oder auf einen Wert ungleich null, wenn es einen vergangenen, gegenwärtigen oder künftigen Zeitpunkt gibt, zu dem die Sommerzeit gilt).Verfügbarkeit: Unix.
Bemerkung
Zwar kann das Ändern der Umgebungsvariablen
TZin vielen Fällen die Ausgabe von Funktionen wielocaltime()beeinflussen, ohne dasstzset()aufgerufen wird, auf dieses Verhalten sollte man sich aber nicht verlassen.Die Umgebungsvariable
TZsollte keine Leerzeichen enthalten.Das Standardformat der Umgebungsvariablen
TZist (zur Verdeutlichung mit Leerzeichen versehen):std offset [dst [offset [,start[/time], end[/time]]]]
Die Bestandteile sind:
stdunddstDrei oder mehr alphanumerische Zeichen, die die Abkürzungen der Zeitzone angeben. Sie werden an time.tzname weitergegeben.
offsetDer Offset hat die Form
± hh[:mm[:ss]]. Er gibt den Wert an, der zur Ortszeit addiert wird, um UTC zu erhalten. Steht ein „-“ davor, liegt die Zeitzone östlich des Nullmeridians, andernfalls westlich. Folgt auf dst kein Offset, wird angenommen, dass die Sommerzeit der Normalzeit um eine Stunde vorausgeht.start[/time], end[/time]Gibt an, wann zur Sommerzeit und wann wieder zurück gewechselt wird. Die Start- und Enddaten haben eines der folgenden Formate:
JnDer julianische Tag n (1 <= n <= 365). Schalttage werden nicht mitgezählt, deshalb ist der 28. Februar in allen Jahren Tag 59 und der 1. März Tag 60.
nDer nullbasierte julianische Tag (0 <= n <= 365). Schalttage werden mitgezählt, und der 29. Februar lässt sich angeben.
Mm.n.dDer 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-Tag im Monat m“ bedeutet, der in der vierten oder in der fünften Woche liegen kann). Woche 1 ist die erste Woche, in der der d-te Tag vorkommt. Tag null ist ein Sonntag.
timehat dasselbe Format wieoffset, nur ist kein führendes Vorzeichen („-“ oder „+“) erlaubt. Ist time nicht angegeben, gilt 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 (darunter *BSD, Linux, Solaris und Darwin) ist es bequemer, die Zeitzonenregeln über die Datenbank zoneinfo (tzfile(5)) des Systems anzugeben. Setze dazu die Umgebungsvariable
TZauf den Pfad der benötigten Zeitzonendatei, relativ zur Wurzel der zoneinfo-Zeitzonendatenbank des Systems, die üblicherweise unter/usr/share/zoneinfoliegt. Zum Beispiel'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 Uhrenkennungen¶
Diese Konstanten werden als Parameter für clock_getres() und clock_gettime() verwendet.
- time.CLOCK_BOOTTIME¶
Identisch mit
CLOCK_MONOTONIC, schließt aber auch jede Zeit ein, in der das System ausgesetzt ist.Damit können Anwendungen eine monotone Uhr bekommen, die das Aussetzen berücksichtigt, ohne sich mit den Schwierigkeiten von
CLOCK_REALTIMEbefassen zu müssen, die Sprünge aufweisen kann, wenn die Zeit übersettimeofday()oder Ähnliches geändert wird.Verfügbarkeit: Linux >= 2.6.39.
Added in version 3.7.
- time.CLOCK_HIGHRES¶
Das Betriebssystem Solaris hat einen Zeitgeber
CLOCK_HIGHRES, der eine möglichst gute Hardwarequelle zu verwenden versucht und nahezu Nanosekundenauflösung liefern kann.CLOCK_HIGHRESist die nicht verstellbare, hochauflösende Uhr.Verfügbarkeit: Solaris.
Added in version 3.3.
- time.CLOCK_MONOTONIC¶
Uhr, die nicht gesetzt werden kann und die monotone Zeit seit einem nicht näher bestimmten Startpunkt darstellt.
Verfügbarkeit: Unix.
Added in version 3.3.
- time.CLOCK_MONOTONIC_RAW¶
Ähnlich
CLOCK_MONOTONIC, bietet aber Zugriff auf eine rohe, hardwaregestützte Zeit, die NTP-Anpassungen nicht unterliegt.Verfügbarkeit: Linux >= 2.6.28, macOS >= 10.12.
Added in version 3.3.
- time.CLOCK_MONOTONIC_RAW_APPROX¶
Ähnlich
CLOCK_MONOTONIC_RAW, liest aber einen Wert, den das System beim Kontextwechsel zwischengespeichert hat, und ist deshalb weniger genau.Verfügbarkeit: macOS >= 10.12.
Added in version 3.13.
- time.CLOCK_PROCESS_CPUTIME_ID¶
Hochauflösender Zeitgeber je Prozess, von der CPU.
Verfügbarkeit: Unix.
Added in version 3.3.
- time.CLOCK_PROF¶
Hochauflösender Zeitgeber je Prozess, von der CPU.
Verfügbarkeit: FreeBSD, NetBSD >= 7, OpenBSD.
Added in version 3.7.
- time.CLOCK_TAI¶
-
Das System muss eine aktuelle Schaltsekundentabelle haben, damit das die richtige Antwort liefert. PTP- oder NTP-Software kann eine Schaltsekundentabelle pflegen.
Verfügbarkeit: Linux.
Added in version 3.9.
- time.CLOCK_THREAD_CPUTIME_ID¶
Threadspezifische CPU-Zeit-Uhr.
Verfügbarkeit: Unix.
Added in version 3.3.
- time.CLOCK_UPTIME¶
Zeit, deren Absolutwert die Zeit ist, die das System gelaufen und nicht ausgesetzt war. Sie liefert eine genaue Messung der Laufzeit, sowohl absolut als auch als Intervall.
Verfügbarkeit: FreeBSD, OpenBSD >= 5.5.
Added in version 3.7.
- time.CLOCK_UPTIME_RAW¶
Uhr, die monoton hochzählt und die Zeit seit einem beliebigen Punkt verfolgt, von Frequenz- oder Zeitanpassungen unbeeinflusst bleibt und nicht weiterzählt, während das System schläft.
Verfügbarkeit: macOS >= 10.12.
Added in version 3.8.
- time.CLOCK_UPTIME_RAW_APPROX¶
Wie
CLOCK_UPTIME_RAW, der Wert wird aber vom System bei Kontextwechseln zwischengespeichert und ist deshalb weniger genau.Verfügbarkeit: macOS >= 10.12.
Added in version 3.13.
Die folgende Konstante ist der einzige Parameter, der an clock_settime() übergeben werden kann.
- time.CLOCK_REALTIME¶
Echtzeituhr. Diese Uhr zu setzen erfordert entsprechende Rechte. Die Uhr ist für alle Prozesse dieselbe.
Verfügbarkeit: Unix.
Added in version 3.3.
Zeitzonenkonstanten¶
- time.altzone¶
Der Offset der örtlichen Sommerzeitzone in Sekunden westlich von UTC, sofern eine festgelegt ist. Er ist negativ, wenn die örtliche Sommerzeitzone östlich von UTC liegt (wie in Westeuropa einschließlich Großbritannien). Verwende das nur, wenn
daylightungleich null ist. Siehe den Hinweis unten.
- time.daylight¶
Ungleich null, wenn eine Sommerzeitzone festgelegt ist. Siehe den Hinweis unten.
- time.timezone¶
Der Offset der örtlichen Zeitzone (ohne Sommerzeit) in Sekunden westlich von UTC (in den meisten Teilen Westeuropas negativ, in den USA positiv, in Großbritannien null). Siehe den Hinweis unten.
- time.tzname¶
Ein Tupel aus zwei Zeichenketten: Die erste ist der Name der örtlichen Zeitzone ohne Sommerzeit, die zweite der Name der örtlichen Sommerzeitzone. Ist keine Sommerzeitzone festgelegt, sollte die zweite Zeichenkette nicht verwendet werden. Siehe den Hinweis unten.
Bemerkung
Bei den obigen Zeitzonenkonstanten (altzone, daylight, timezone und tzname) wird der Wert von den Zeitzonenregeln bestimmt, die beim Laden des Moduls oder beim letzten Aufruf von tzset() galten. Für Zeiten in der Vergangenheit kann er falsch sein. Es wird empfohlen, die Ergebnisse tm_gmtoff und tm_zone von localtime() zu verwenden, um Zeitzonenangaben zu bekommen.
Siehe auch
- Modul
datetime Objektorientiertere Schnittstelle zu Datum und Zeit.
- Modul
locale Dienste zur Internationalisierung. Die Einstellung des Gebietsschemas wirkt sich darauf aus, wie viele Formatbezeichner in
strftime()undstrptime()ausgelegt werden.- Modul
calendar Allgemeine Funktionen rund um den Kalender.
timegm()ist die Umkehrung vongmtime()aus diesem Modul.
Fußnoten