Heim > Artikel > Backend-Entwicklung > Warum schlägt die Konvertierung von Wochenzahlen in Datumsangaben in Python mit „2013-W26“ fehl?
Wochenzahlen in Datumsangaben umwandeln
Beim Versuch, eine Wochenzahl mit dem folgenden Code in ein Datum umzuwandeln, ist ein Problem aufgetreten:
import datetime d = "2013-W26" r = datetime.datetime.strptime(d, "%Y-W%W") print(r)
Beim Ausführen dieses Codes haben Sie erwartet, dass „2013-01-01 00:00:00“ angezeigt wird, aber stattdessen ist ein Fehler aufgetreten. Lassen Sie uns untersuchen, was die Ursache dafür ist und wie Sie es beheben können.
Behebung des Problems
Um eine Wochennummer genau in ein Datum umzuwandeln, benötigen Sie über die Wochennummer hinaus zusätzliche Informationen selbst, nämlich der Wochentag. Durch Hinzufügen eines Standardwochentags zu Ihrem Code wird dieses Problem behoben. Hier ist der geänderte Code:
import datetime d = "2013-W26" r = datetime.datetime.strptime(d + '-1', "%Y-W%W-%w") print(r)
Erklärung der Änderung
Die Musterzusätze „-1“ und „-%w“ sind bei dieser Änderung von entscheidender Bedeutung. „-1“ weist den Parser an, den Montag in dieser bestimmten Woche auszuwählen, und „-%w“ passt den Wochentag relativ zum Montag an. Beispielsweise würde die Verwendung von „-%w“ Sonntag zurückgeben, wenn die angegebene Wochennummer Montag entspricht.
Verhalten von %W und Fußnote 4
In der Python-Dokumentation Im Abschnitt zum Verhalten von strftime() und strptime() bietet Fußnote 4 wertvolle Einblicke: „Bei Verwendung mit der strptime()-Methode werden %U und %W nur in Berechnungen verwendet, wenn der Wochentag und das Jahr angegeben sind.“
Zusätzliche Hinweise
Wenn Sie es mit einem ISO-Wochendatum zu tun haben, können Sie stattdessen %G-W%V-%u verwenden. Diese Anweisungen erfordern Python 3.6 oder höher.
Das obige ist der detaillierte Inhalt vonWarum schlägt die Konvertierung von Wochenzahlen in Datumsangaben in Python mit „2013-W26“ fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!