Python3 Datum und Uhrzeit
Python-Programme können auf viele Arten mit Datum und Uhrzeit umgehen, und das Konvertieren von Datumsformaten ist eine gängige Funktionalität.
Python stellt ein time- und calendar-Modul bereit, das zum Formatieren von Datums- und Zeitangaben verwendet werden kann.
Zeitintervalle sind Gleitkommazahlen in Sekunden.
Jeder Zeitstempel wird als die Zeit ausgedrückt, die seit Mitternacht (Epoche) am 1. Januar 1970 vergangen ist.
Es gibt viele Funktionen im time-Modul von Python, die gängige Datumsformate umwandeln können. Beispielsweise wird die Funktion time.time() verwendet, um den aktuellen Zeitstempel abzurufen, wie im folgenden Beispiel:
Beispiele
import time # time-Modul importieren
ticks = time.time()
print ("Aktueller Zeitstempel:", ticks)
Die Ausgabe des obigen Beispiels ist:
当前时间戳为: 1459996086.7115328
Zeitstempel-Einheiten sind am besten für Datumsarithmetik geeignet. Allerdings können Daten vor 1970 auf diese Weise nicht dargestellt werden. Daten, die zu weit in der Zukunft liegen, sind ebenfalls nicht möglich, da UNIX und Windows nur bis 2038 unterstützen.
Was ist ein Zeit-Tupel?
Viele Python-Funktionen verarbeiten Zeit mithilfe eines Tupels aus 9 Gruppen von Zahlen:
| Nein. | Feld | Wert |
|---|---|---|
| 0 | 4-stelliges Jahr | 2008 |
| 1 | month | 1 bis 12 |
| 2 | day | 1 bis 31 |
| 3 | Stunde | 0 bis 23 |
| 4 | Minute | 0 bis 59 |
| 5 | second | 0 bis 61 (60 oder 61 sind Schaltsekunden) |
| 6 | Wochentag | 0 bis 6 (0 ist Montag) |
| 7 | Tag des Jahres | 1 bis 366 (Julianischer Kalender) |
| 8 | Sommerzeit | -1, 0, 1, -1 ist ein Flag, das bestimmt, ob es sich um Sommerzeit handelt |
Das Obige ist das struct_time-Tupel. Diese Struktur hat die folgenden Attribute:
| Nein. | Attribute | Wert |
|---|---|---|
| 0 | tm_year | 2008 |
| 1 | tm_mon | 1 bis 12 |
| 2 | tm_mday | 1 bis 31 |
| 3 | tm_hour | 0 bis 23 |
| 4 | tm_min | 0 bis 59 |
| 5 | tm_sec | 0 bis 61 (60 oder 61 sind Schaltsekunden) |
| 6 | tm_wday | 0 bis 6 (0 ist Montag) |
| 7 | tm_yday | Tag des Jahres, 1 bis 366 |
| 8 | tm_isdst | Ob es sich um Sommerzeit handelt, Werte: 1 (Sommerzeit), 0 (keine Sommerzeit), -1 (unbekannt), Standard -1 |
Aktuelle Zeit abrufen
Um von einem Zeitstempel, der eine Gleitkommazahl zurückgibt, in ein Zeit-Tupel umzuwandeln, übergeben Sie die Gleitkommazahl einfach an Funktionen wie localtime.
#!/usr/bin/python3
import time
localtime = time.localtime(time.time())
print ("本地时间为 :", localtime)
Die Ausgabe des obigen Beispiels ist:
本地时间为 : time.struct_time(tm_year=2016, tm_mon=4, tm_mday=7, tm_hour=10, tm_min=28, tm_sec=49, tm_wday=3, tm_yday=98, tm_isdst=0)
Formatierte Zeit abrufen
Sie können verschiedene Formate nach Ihren Bedürfnissen wählen, aber die einfachste Funktion zum Erhalten eines lesbaren Zeitmusters ist asctime():
#!/usr/bin/python3
import time
localtime = time.asctime( time.localtime(time.time()) )
print ("本地时间为 :", localtime)
Die Ausgabe des obigen Beispiels ist:
本地时间为 : Thu Apr 7 10:29:13 2016
Datumsangaben formatieren
Wir können die strftime-Methode des time-Moduls verwenden, um Datumsangaben zu formatieren:
time.strftime(format[, t])
Beispiele
import time
# Ins Format 2016-03-20 11:45:39 formatieren
print (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
# Ins Format Sat Mar 28 22:24:24 2016 formatieren
print (time.strftime("%a %b %d %H:%M:%S %Y", time.localtime()))
# Formatzeichenfolge in Zeitstempel umwandeln
a = "Sat Mar 28 22:24:24 2016"
print (time.mktime(time.strptime(a,"%a %b %d %H:%M:%S %Y")))
Die Ausgabe des obigen Beispiels ist:
2016-04-07 10:29:46 Thu Apr 07 10:29:46 2016 1459175064.0
Formatierungssymbole für Uhrzeit und Datum in Python:
- %y Zweistellige Jahresdarstellung (00-99)
- %Y Vierstellige Jahresdarstellung (000-9999)
- %m Monat (01-12)
- %d Tag des Monats (0-31)
- %H Stunde im 24-Stunden-Format (0-23)
- %I Stunde im 12-Stunden-Format (01-12)
- %M Minuten (00-59)
- %S Sekunden (00-59)
- %a Lokaler abgekürzter Wochentagsname
- %A Lokaler vollständiger Wochentagsname
- %b Lokaler abgekürzter Monatsname
- %B Lokaler vollständiger Monatsname
- %c Lokale geeignete Datums- und Zeitdarstellung
- %j Tag des Jahres (001-366)
- %p Lokale Entsprechung von A.M. oder P.M.
- %U Kalenderwoche des Jahres (00-53), Sonntag ist der Wochenbeginn
- %w Wochentag (0-6), Sonntag ist der Wochenbeginn
- %W Kalenderwoche des Jahres (00-53), Montag ist der Wochenbeginn
- %x Lokale geeignete Datumsdarstellung
- %X Lokale geeignete Zeitdarstellung
- %Z Name der aktuellen Zeitzone
- %% Das Prozentzeichen selbst
Kalender für einen Monat abrufen
Das Calendar-Modul bietet eine Vielzahl von Methoden für den Umgang mit Jahres- und Monatskalendern, zum Beispiel die Ausgabe eines Monatskalenders:
Beispiele
import calendar
cal = calendar.month(2016, 1)
print ("Das Folgende gibt den Kalender für Januar 2016 aus:")
print (cal)
Die Ausgabe des obigen Beispiels ist:
以下输出2016年1月份的日历:
January 2016
Mo Tu We Th Fr Sa Su
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Time-Modul
Das Time-Modul enthält die folgenden eingebauten Funktionen, sowohl für die Zeitverarbeitung als auch für die Konvertierung von Zeitformaten:
| Nein. | Funktion und Beschreibung | Beispiele |
|---|---|---|
| 1 | time.altzone Gibt den Offset in Sekunden für Sommerzeit-Zeitzonen westlich von Greenwich zurück. Wenn die Region östlich von Greenwich liegt, wird ein negativer Wert zurückgegeben (z. B. Westeuropa, einschließlich UK). Es ist nur in Regionen verfügbar, in denen die Sommerzeit aktiviert ist. |
Das folgende Beispiel demonstriert die Verwendung der Funktion altzone():
>>> import time
>>> print ("time.altzone %d " % time.altzone)
time.altzone -28800
|
| 2 | time.asctime([tupletime]) Akzeptiert ein Zeit-Tupel und gibt eine lesbare 24-stellige Zeichenkette in der Form "Tue Dec 11 18:07:14 2008" (Dienstag, 11. Dezember 2008, 18:07:14) zurück. |
Das folgende Beispiel demonstriert die Verwendung der Funktion asctime():
>>> import time
>>> t = time.localtime()
>>> print ("time.asctime(t): %s " % time.asctime(t))
time.asctime(t): Thu Apr 7 10:36:20 2016
|
| 3 | time.clock() Gibt die aktuelle CPU-Zeit in Gleitkommasekunden zurück. Sie wird verwendet, um den Zeitverbrauch verschiedener Programme zu messen, und ist nützlicher als time.time(). |
Da diese Methode vom Betriebssystem abhängt, wird sie nach Python 3.3 nicht empfohlen und wurde in Version 3.8 entfernt; stattdessen sollten die folgenden beiden Funktionen verwendet werden. time.perf_counter() # 返回系统运行时间 time.process_time() # 返回进程运行时间 |
| 4 | time.ctime([secs]) Ihre Wirkung entspricht asctime(localtime(secs)); wenn kein Argument angegeben wird, entspricht sie asctime(). |
Das folgende Beispiel demonstriert die Verwendung der Funktion ctime():
>>> import time
>>> print ("time.ctime() : %s" % time.ctime())
time.ctime() : Thu Apr 7 10:51:58 2016
|
| 5 | time.gmtime([secs]) Empfängt einen Zeitstempel (Gleitkommasekunden seit der Epoche 1970) und gibt das Zeit-Tupel t unter Greenwich Mean Time zurück. Hinweis: t.tm_isdst ist immer 0. |
Das folgende Beispiel veranschaulicht die Verwendung der Funktion gmtime():
>>> import time
>>> print ("gmtime :", time.gmtime(1455508609.34375))
gmtime : time.struct_time(tm_year=2016, tm_mon=2, tm_mday=15, tm_hour=3, tm_min=56, tm_sec=49, tm_wday=0, tm_yday=46, tm_isdst=0)
|
| 6 | time.localtime([secs] Empfängt einen Zeitstempel (Gleitkommasekunden seit der Epoche 1970) und gibt das Zeit-Tupel t unter Ortszeit zurück (t.tm_isdst kann 0 oder 1 sein, je nachdem, ob zu diesem Zeitpunkt im lokalen Bereich Sommerzeit ist). |
Das folgende Beispiel demonstriert die Verwendung der Funktion localtime():
>>> import time
>>> print ("localtime(): ", time.localtime(1455508609.34375))
localtime(): time.struct_time(tm_year=2016, tm_mon=2, tm_mday=15, tm_hour=11, tm_min=56, tm_sec=49, tm_wday=0, tm_yday=46, tm_isdst=0)
|
| 7 | time.mktime(tupletime) Akzeptiert ein Zeit-Tupel und gibt einen Zeitstempel (Gleitkommasekunden seit der Epoche 1970) zurück. | Beispiele |
| 8 | time.sleep(secs) Verzögert die Ausführung des aufrufenden Threads, wobei secs für Sekunden steht. |
Das folgende Beispiel demonstriert die Verwendung der Funktion sleep():
#!/usr/bin/python3
import time
print ("Start : %s" % time.ctime())
time.sleep( 5 )
print ("End : %s" % time.ctime())
|
| 9 | time.strftime(fmt[,tupletime]) Empfängt ein Zeittupel und gibt die lokale Zeit als lesbare Zeichenkette zurück, wobei das Format durch fmt bestimmt wird. |
Das folgende Beispiel zeigt die Verwendung der Funktion strftime():
>>> import time
>>> print (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
2016-04-07 11:18:05
|
| 10 | time.strptime(str,fmt='%a %b %d %H:%M:%S %Y') Zerlegt eine Zeitzeichenkette gemäß dem Format von fmt in ein Zeittupel. |
Das folgende Beispiel demonstriert die Verwendung der Funktion strptime():
>>> import time
>>> struct_time = time.strptime("30 Nov 00", "%d %b %y")
>>> print ("返回元组: ", struct_time)
返回元组: 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)
|
| 11 | time.time( ) Gibt den Zeitstempel der aktuellen Zeit zurück (Gleitkommasekunden, die seit der Epoche von 1970 vergangen sind). |
Das folgende Beispiel demonstriert die Verwendung der time()-Funktion: >>> import time >>> print(time.time()) 1459999336.1963577 |
| 12 | time.tzset() Initialisiert zeitbezogene Einstellungen gemäß der Umgebungsvariable TZ neu. | Beispiele |
| 13 |
time.perf_counter() Gibt die genaue Zeit des Timers zurück (Systemlaufzeit), einschließlich der Schlafzeit des gesamten Systems. Da der Bezugspunkt des Rückgabewerts nicht definiert ist, ist nur die Differenz zwischen den Ergebnissen aufeinanderfolgender Aufrufe gültig. | Beispiele |
| 14 |
time.process_time() Gibt die gesamte vom aktuellen Prozess ausgeführte CPU-Zeit zurück, ohne die Schlafzeit. Da der Bezugspunkt des Rückgabewerts nicht definiert ist, ist nur die Differenz zwischen den Ergebnissen aufeinanderfolgender Aufrufe gültig. |
Das Modul Time enthält die folgenden 2 sehr wichtigen Attribute:
| Nein. | Attribut und Beschreibung |
|---|---|
| 1 | time.timezone Das Attribut time.timezone ist der Versatz in Sekunden der lokalen Zeitzone (wenn die Sommerzeit nicht in Kraft ist) gegenüber Greenwich (>0, Amerika; <=0, Großteil von Europa, Asien, Afrika). |
| 2 | time.tzname Das Attribut time.tzname enthält ein Paar Zeichenketten, die je nach Situation variieren: den lokalen Zeitzonennamen mit Sommerzeit und den ohne. |
Kalendermodul
Die Funktionen in diesem Modul sind alle kalenderbezogen, wie z. B. das Ausgeben eines Zeichenkalenders für einen Monat.
Montag ist der standardmäßige erste Wochentag und Sonntag ist der standardmäßige letzte Tag. Um die Einstellung zu ändern, rufen Sie die Funktion calendar.setfirstweekday() auf. Das Modul enthält die folgenden eingebauten Funktionen:
| Nein. | Funktion und Beschreibung |
|---|---|
| 1 | calendar.calendar(year,w=2,l=1,c=6) Gibt einen mehrzeiligen Kalender im Zeichenkettenformat für year zurück, mit 3 Monaten pro Zeile und Zwischenabstand c. Der tägliche Breitenabstand beträgt w Zeichen. Die Länge jeder Zeile ist21* W+18+2* C。lEs ist die Anzahl der Zeilen pro Woche. |
| 2 | calendar.firstweekday( ) Gibt die aktuelle Einstellung für den ersten Wochentag zurück. Standardmäßig, wenn das Modul calendar zum ersten Mal geladen wird, gibt es 0 zurück, d. h. Montag. |
| 3 | calendar.isleap(year) Gibt True zurück, wenn es ein Schaltjahr ist, andernfalls False. >>> import calendar >>> print(calendar.isleap(2000)) True >>> print(calendar.isleap(1900)) False |
| 4 | calendar.leapdays(y1,y2) Gibt die Gesamtzahl der Schaltjahre zwischen den beiden Jahren Y1 und Y2 zurück. |
| 5 | calendar.month(year,month,w=2,l=1) Gibt einen mehrzeiligen Kalender im Zeichenkettenformat für den Monat month des Jahres year zurück, mit zwei Kopfzeilen, eine Woche pro Zeile. Der tägliche Breitenabstand beträgt w Zeichen. Die Länge jeder Zeile ist 7*w+6. l ist die Anzahl der Zeilen pro Woche. |
| 6 | calendar.monthcalendar(year,month) Gibt eine einfach verschachtelte Liste von Ganzzahlen zurück. Jede Unterliste enthält Ganzzahlen, die eine Woche repräsentieren. Datumsangaben außerhalb des Monats month des Jahres year werden auf 0 gesetzt; Datumsangaben innerhalb des Bereichs werden durch den Tag des Monats dargestellt, beginnend bei 1. |
| 7 | calendar.monthrange(year,month) Gibt zwei Ganzzahlen zurück. Die erste ist der Wochentag des Monats und die zweite die Anzahl der Tage im Monat. Wochentage reichen von 0 (Montag) bis 6 (Sonntag). >>> import calendar >>> calendar.monthrange(2014, 11) (5, 30) (5, 30) Erklärung: 5 bedeutet, dass der erste Tag im November 2014 ein Samstag ist, und 30 bedeutet, dass der November 2014 insgesamt 30 Tage hat. |
| 8 | calendar.prcal(year, w=0, l=0, c=6, m=3) Entspricht print (calendar.calendar(year, w=0, l=0, c=6, m=3)). |
| 9 | calendar.prmonth(theyear, themonth, w=0, l=0) Entsprichtprint(calendar.month(theyear, themonth, w=0, l=0))。 |
| 10 | calendar.setfirstweekday(weekday) Legt den Starttag-Code jeder Woche fest. Von 0 (Montag) bis 6 (Sonntag). |
| 11 | calendar.timegm(tupletime) Das Gegenstück zu time.gmtime: akzeptiert ein Zeit-Tupel und gibt den Zeitstempel dieses Moments zurück (Gleitkommasekunden seit der Epoche von 1970). |
| 12 | calendar.weekday(year,month,day) Gibt den Wochentagscode für das angegebene Datum zurück. 0 (Montag) bis 6 (Sonntag). Der Monat reicht von 1 (Januar) bis 12 (Dezember). |
Weitere verwandte Module und Funktionen
Zu den weiteren Modulen in Python für die Verarbeitung von Datum und Uhrzeit gehören:
Weitere Erweiterungen