週番号を日付に変換
次のコードを使用して週番号を日付に変換しようとしたときに問題が発生しました。
import datetime d = "2013-W26" r = datetime.datetime.strptime(d, "%Y-W%W") print(r)
このコードを実行すると、「2013-01-01 00:00:00」が表示されるはずですが、代わりにエラーが発生しました。この問題の原因と解決方法を見てみましょう。
問題への対処
週番号を日付に正確に変換するには、週番号以外の追加情報が必要です。それ自体、つまり曜日です。コードにデフォルトの曜日を追加すると、この問題が解決されます。変更されたコードは次のとおりです。
import datetime d = "2013-W26" r = datetime.datetime.strptime(d + '-1', "%Y-W%W-%w") print(r)
変更の説明
この変更では、' -1' および '-%w' パターンの追加が重要です。 「-1」はパーサーにその特定の週の月曜日を選択するように指示し、「-%w」は月曜日を基準にして曜日を調整します。たとえば、「-%w」を使用すると、指定された週番号が月曜日に対応する場合は日曜日が返されます。
%W および脚注 4 の動作
Python ドキュメントのstrftime() および strptime() の動作に関するセクションの脚注 4 には、貴重な洞察が含まれています。「strptime() メソッドで使用する場合、%U と %W は、曜日と年が指定されている場合の計算にのみ使用されます。」
追加メモ
ISO 週日を扱う場合は、代わりに %G-W%V-%u を使用できます。これらのディレクティブには Python 3.6 以降が必要です。
以上がPython で週番号を日付に変換すると「2013-W26」で失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。