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+)

#!/usr/bin/python # -*- coding: UTF-8 -*- import time # Importiere das time-Modul ticks = time.time() print "Der aktuelle Zeitstempel ist:", ticks

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.FeldWert
04-stelliges Jahr2008
1month1 bis 12
2day1 bis 31
3Stunde0 bis 23
4Minute0 bis 59
5second0 bis 61 (60 oder 61 sind Schaltsekunden)
6Wochentag0 bis 6 (0 ist Montag)
7Tag des Jahres1 bis 366 (Julianischer Kalender)
8Sommerzeit-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.AttributeWert
0tm_year2008
1tm_mon1 bis 12
2tm_mday1 bis 31
3tm_hour0 bis 23
4tm_min0 bis 59
5tm_sec0 bis 61 (60 oder 61 sind Schaltsekunden)
6tm_wday0 bis 6 (0 ist Montag)
7tm_yday1 bis 366 (Julianischer Kalender)
8tm_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+)

#!/usr/bin/python # -*- coding: UTF-8 -*- import time localtime = time.localtime(time.time()) print "Ortszeit ist:", localtime

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+)

#!/usr/bin/python # -*- coding: UTF-8 -*- import time localtime = time.asctime( time.localtime(time.time()) ) print "Ortszeit ist:", localtime

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+)

#!/usr/bin/python # -*- coding: UTF-8 -*- import time # Formatieren als 2016-03-20 11:45:39 print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) # Formatieren als Sat Mar 28 22:24:24 2016 print time.strftime("%a %b %d %H:%M:%S %Y", time.localtime()) # Format-String 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: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+)

#!/usr/bin/python # -*- coding: UTF-8 -*- 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
1time.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.
2time.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).
3time.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().
4time.ctime([secs])
Es ist äquivalent zu asctime(localtime(secs)); wenn kein Argument angegeben wird, ist es äquivalent zu asctime().
5time.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.
6time.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).
7time.mktime(tupletime)
Akzeptiert ein Zeit-Tupel und gibt einen Zeitstempel zurück (Gleitkommazahl in Sekunden seit der Epoche 1970).
8time.sleep(secs)
Verzögert die Ausführung des aufrufenden Threads; secs ist in Sekunden.
9time.strftime(fmt[,tupletime])
Nimmt ein Zeit-Tupel entgegen und gibt die lokale Zeit als lesbare Zeichenkette zurück; das Format wird durch fmt bestimmt.
10time.strptime(str,fmt='%a %b %d %H:%M:%S %Y')
Parst eine Zeitzeichenkette gemäß dem Format fmt in ein Zeit-Tupel.
11time.time( )
Gibt den Zeitstempel der aktuellen Zeit zurück (seit der Epoche 1970 vergangene Gleitkommasekunden).
12time.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
1time.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).
2time.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
1calendar.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.
2calendar.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.
3calendar.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
4calendar.leapdays(y1,y2)
Gibt die Gesamtzahl der Schaltjahre zwischen den Jahren Y1 und Y2 zurück.
5calendar.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.
6calendar.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.
7calendar.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.
8calendar.prcal(year,w=2,l=1,c=6)
Entsprichtprint calendar.calendar(year,w=2,l=1,c=6)。
9calendar.prmonth(year,month,w=2,l=1)
Entsprichtprint calendar.month(year,month,w=2,l=1) 。
10calendar.setfirstweekday(weekday)
Legt den Starttagscode für jede Woche fest. 0 (Montag) bis 6 (Sonntag).
11calendar.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).
12calendar.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