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

#!/usr/bin/python3

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.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, das bestimmt, ob es sich um Sommerzeit handelt

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_ydayTag des Jahres, 1 bis 366
8tm_isdstOb 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

#!/usr/bin/python3

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

#!/usr/bin/python3

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 BeschreibungBeispiele
1time.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 
2time.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 
3time.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().

Beispiele

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()  # 返回进程运行时间
4time.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
5time.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)
6time.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)
7time.mktime(tupletime)
Akzeptiert ein Zeit-Tupel und gibt einen Zeitstempel (Gleitkommasekunden seit der Epoche 1970) zurück.
Beispiele
8time.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())
9time.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
10time.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)
11time.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
12time.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
1time.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).
2time.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
1calendar.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.
2calendar.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.
3calendar.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
4calendar.leapdays(y1,y2)
Gibt die Gesamtzahl der Schaltjahre zwischen den beiden Jahren Y1 und Y2 zurück.
5calendar.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.
6calendar.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.
7calendar.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.

8calendar.prcal(year, w=0, l=0, c=6, m=3)
Entspricht print (calendar.calendar(year, w=0, l=0, c=6, m=3)).
9calendar.prmonth(theyear, themonth, w=0, l=0)
Entsprichtprint(calendar.month(theyear, themonth, w=0, l=0))。
10calendar.setfirstweekday(weekday)
Legt den Starttag-Code jeder Woche fest. Von 0 (Montag) bis 6 (Sonntag).
11calendar.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).
12calendar.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