Python 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 bietet die Module time und calendar, mit denen Datum und Uhrzeit formatiert werden können.
Zeitintervalle sind Gleitkommazahlen in Sekunden.
Jeder Zeitstempel wird als die Zeitspanne ausgedrückt, die seit Mitternacht (Epoche) am 1. Januar 1970 vergangen ist.
Das time-Modul in Python bietet viele Funktionen zum Konvertieren gängiger Datumsformate. Beispielsweise wird die Funktion time.time() verwendet, um den aktuellen Zeitstempel abzurufen, wie im folgenden Beispiel:
Beispiele (Python 2.0+)
Die Ausgabe des obigen Beispiels ist:
当前时间戳为: 1459994552.51
Die Zeitstempel-Einheit eignet sich am besten für Datumsarithmetik. Daten vor 1970 können jedoch auf diese Weise nicht dargestellt werden. Daten, die zu weit in der Zukunft liegen, funktionieren ebenfalls nicht, da UNIX und Windows nur bis 2038 unterstützen.
Was ist ein Zeit-Tupel?
Viele Python-Funktionen verarbeiten Zeit als ein Tupel 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, um zu bestimmen, ob Sommerzeit gilt |
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 | 1 bis 366 (Julianischer Kalender) |
| 8 | tm_isdst | -1, 0, 1; -1 ist ein Flag, um zu bestimmen, ob Sommerzeit gilt |
Aktuelle Zeit abrufen
Um einen als Gleitkommazahl ausgedrückten Zeitstempel in ein Zeit-Tupel umzuwandeln, übergeben Sie die Gleitkommazahl einfach an eine Funktion wie localtime.
Beispiele (Python 2.0+)
Die Ausgabe des obigen Beispiels ist:
本地时间为 : time.struct_time(tm_year=2016, tm_mon=4, tm_mday=7, tm_hour=10, tm_min=3, tm_sec=27, tm_wday=3, tm_yday=98, tm_isdst=0)
Formatierte Zeit abrufen
Sie können je nach Bedarf verschiedene Formate wählen, aber die einfachste Funktion zum Erhalt eines lesbaren Zeitformats ist asctime():
Beispiele (Python 2.0+)
Die Ausgabe des obigen Beispiels ist:
本地时间为 : Thu Apr 7 10:05:21 2016
Datum formatieren
Wir können die strftime-Methode des time-Moduls verwenden, um Datumsangaben zu formatieren:
time.strftime(format[, t])
Beispieldemonstration:
Beispiele (Python 2.0+)
Die Ausgabe des obigen Beispiels ist:
2016-04-07 10:25:09 Thu Apr 07 10:25:09 2016 1459175064.0
Symbole für die Datums- und Zeitformatierung 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 Minute (00-59)
- %S Sekunde (00-59)
- %a Abgekürzter Wochentagsname des Gebietsschemas
- %A Vollständiger Wochentagsname des Gebietsschemas
- %b Abgekürzter Monatsname des Gebietsschemas
- %B Vollständiger Monatsname des Gebietsschemas
- %c Geeignete Datums- und Zeitdarstellung des Gebietsschemas
- %j Tag des Jahres (001-366)
- %p Entsprechung des Gebietsschemas für A.M. oder P.M.
- %U Wochennummer des Jahres (00-53), Sonntag als erster Tag der Woche
- %w Wochentag (0-6), Sonntag als erster Tag der Woche
- %W Wochennummer des Jahres (00-53), Montag als erster Tag der Woche
- %x Geeignete Datumsdarstellung des Gebietsschemas
- %X Geeignete Zeitdarstellung des Gebietsschemas
- %Z Name der aktuellen Zeitzone
- %% Das %-Zeichen selbst
Kalender für einen Monat abrufen
Das Calendar-Modul bietet eine breite Palette von Methoden für die Behandlung jährlicher und monatlicher Kalender, zum Beispiel das Ausgeben des Kalenders eines Monats:
Beispiele (Python 2.0+)
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 |
|---|---|
| 1 | time.altzone Gibt den Offset in Sekunden der Sommerzeit-(DST-)Region westlich von Greenwich zurück. Wenn die Region östlich von Greenwich liegt, wird ein negativer Wert zurückgegeben (z. B. Westeuropa, einschließlich des Vereinigten Königreichs). Nur für Regionen verfügbar, in denen die Sommerzeit aktiviert ist. |
| 2 | time.asctime([tupletime]) Nimmt ein Zeit-Tupel entgegen und gibt eine lesbare Zeichenkette mit 24 Zeichen in der Form "Tue Dec 11 18:07:14 2008" zurück (11. Dezember 2008, Dienstag, 18:07:14). |
| 3 | time.clock( ) Gibt die aktuelle CPU-Zeit als Gleitkommazahl in Sekunden zurück. Wird verwendet, um die verstrichene Zeit verschiedener Programme zu messen, nützlicher als time.time(). |
| 4 | time.ctime([secs]) Es ist äquivalent zu asctime(localtime(secs)); wenn kein Argument angegeben wird, ist es äquivalent zu asctime(). |
| 5 | time.gmtime([secs]) Akzeptiert einen Zeitstempel (Gleitkommazahl in Sekunden seit der Epoche 1970) und gibt ein Zeit-Tupel t in Greenwich Mean Time (GMT) zurück. Hinweis: t.tm_isdst ist immer 0. |
| 6 | time.localtime([secs]) Akzeptiert einen Zeitstempel (Gleitkommazahl in Sekunden seit der Epoche 1970) und gibt ein Zeit-Tupel t in Ortszeit zurück (t.tm_isdst kann 0 oder 1 sein, je nachdem, ob zu diesem Zeitpunkt lokal Sommerzeit gilt). |
| 7 | time.mktime(tupletime) Akzeptiert ein Zeit-Tupel und gibt einen Zeitstempel zurück (Gleitkommazahl in Sekunden seit der Epoche 1970). |
| 8 | time.sleep(secs) Verzögert die Ausführung des aufrufenden Threads; secs ist in Sekunden. |
| 9 | time.strftime(fmt[,tupletime]) Nimmt ein Zeit-Tupel entgegen und gibt die lokale Zeit als lesbare Zeichenkette zurück; das Format wird durch fmt bestimmt. |
| 10 | time.strptime(str,fmt='%a %b %d %H:%M:%S %Y') Parst eine Zeitzeichenkette gemäß dem Format fmt in ein Zeit-Tupel. |
| 11 | time.time( ) Gibt den Zeitstempel der aktuellen Zeit zurück (seit der Epoche 1970 vergangene Gleitkommasekunden). |
| 12 | time.tzset() Initialisiert zeitbezogene Einstellungen basierend auf der Umgebungsvariable TZ neu. |
Das Modul Time enthält die folgenden 2 sehr wichtigen Attribute:
| Nein. | Attribut und Beschreibung |
|---|---|
| 1 | time.timezone Das Attribut time.timezone ist der Offset in Sekunden der lokalen Zeitzone (ohne Sommerzeit) von Greenwich (>0, Amerika; <=0, der größte Teil Europas, Asiens, Afrikas). |
| 2 | time.tzname Das Attribut time.tzname enthält ein Paar von Zeichenketten, die sich je nach Situation unterscheiden, nämlich den Namen der lokalen Zeitzone mit Sommerzeit und den ohne sie. |
Kalendermodul
Die Funktionen in diesem Modul beziehen sich alle auf den Kalender, zum Beispiel das Ausgeben des zeichenbasierten Monatskalenders eines Monats.
Montag ist standardmäßig der erste Tag der Woche und Sonntag der standardmäßig letzte Tag. Um die Einstellung zu ändern, müssen Sie die Funktion calendar.setfirstweekday() aufrufen. Das Modul enthält die folgenden integrierten Funktionen:
| Nein. | Funktion und Beschreibung |
|---|---|
| 1 | calendar.calendar(year,w=2,l=1,c=6) Gibt ein mehrzeiliges Zeichenkettenformat für den Jahreskalender (year) zurück, mit 3 Monaten pro Zeile, getrennt durch einen Abstand von c. Das tägliche Breitenintervall beträgt w Zeichen. Die Länge jeder Zeile beträgt 21* W+18+2* C. l ist die Anzahl der Zeilen pro Woche. |
| 2 | calendar.firstweekday( ) Gibt die Einstellung für den aktuellen Starttag der Woche zurück. Standardmäßig, wenn das Kalendermodul zum ersten Mal geladen wird, gibt es 0 zurück, was Montag entspricht. |
| 3 | calendar.isleap(year) Gibt True zurück, wenn es ein Schaltjahr ist, andernfalls gibt es False zurück. >>> import calendar >>> print(calendar.isleap(2000)) True >>> print(calendar.isleap(1900)) False |
| 4 | calendar.leapdays(y1,y2) Gibt die Gesamtzahl der Schaltjahre zwischen den Jahren Y1 und Y2 zurück. |
| 5 | calendar.month(year,month,w=2,l=1) Gibt einen mehrzeiligen String-Kalender für das Jahr year und den Monat month zurück, mit einem zweizeiligen Titel und einer Zeile pro Woche. Die Tagesbreite beträgt w Zeichen. Die Länge jeder Zeile ist 7*w+6. l ist die Anzahl der Zeilen für jede Woche. |
| 6 | calendar.monthcalendar(year,month) Gibt eine einstufig verschachtelte Liste von Ganzzahlen zurück. Jede Unterliste enthält Ganzzahlen, die eine Woche darstellen. Datumsangaben außerhalb von Jahr year und Monat month werden auf 0 gesetzt; Tage 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 Wochentags-Datumscode dieses Monats, und die zweite ist der Datumscode dieses Monats. Tage reichen von 0 (Montag) bis 6 (Sonntag); Monate von 1 bis 12. |
| 8 | calendar.prcal(year,w=2,l=1,c=6) Entsprichtprint calendar.calendar(year,w=2,l=1,c=6)。 |
| 9 | calendar.prmonth(year,month,w=2,l=1) Entsprichtprint calendar.month(year,month,w=2,l=1) 。 |
| 10 | calendar.setfirstweekday(weekday) Legt den Starttagscode für jede Woche fest. 0 (Montag) bis 6 (Sonntag). |
| 11 | calendar.timegm(tupletime) Die Umkehrung von time.gmtime: akzeptiert ein Zeit-Tupel und gibt den Zeitstempel dieses Moments zurück (Gleitkomma-Sekunden, die seit der Epoche 1970 vergangen sind). |
| 12 | calendar.weekday(year,month,day) Gibt den Datumscode für das angegebene Datum zurück. 0 (Montag) bis 6 (Sonntag). Monate sind 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