Heim  >  Artikel  >  Backend-Entwicklung  >  Warum schlägt die Konvertierung von Wochenzahlen in Datumsangaben in Python mit „2013-W26“ fehl?

Warum schlägt die Konvertierung von Wochenzahlen in Datumsangaben in Python mit „2013-W26“ fehl?

Linda Hamilton
Linda HamiltonOriginal
2024-11-11 02:31:03279Durchsuche

Why Does Converting Week Numbers to Dates in Python Fail with

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn