私のコードの何が問題なのかしてください:
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
_パターンは、その週の月曜日を選択するようにパーサーに指示します。この出力:
_2013-07-01 00:00:00
_
_%W
_は月曜日を週の最初の日として使用します。独自の平日を選択できますが、それから逸脱すると予期しない結果が生じる可能性があります。
ドキュメントの脚注4の strftime()
およびstrptime()
動作 セクションを参照してください。
strptime()
メソッドとともに使用する場合、_%U
_および_%W
_は、曜日と年が指定されている場合にのみ計算で使用されます。
週番号が ISO週日 の場合、代わりに_%G-W%V-%u
_を使用する必要があることに注意してください!これらのディレクティブにはPython 3.6以降が必要です。
他の回答を完了するには-[〜#〜] iso [〜#〜]週番号を使用している場合、この文字列は適切です(取得するには)特定のISO週番号の月曜日):
import datetime
d = '2013-W26'
r = datetime.datetime.strptime(d + '-1', '%G-W%V-%u')
print(r)
%G
、%V
、%u
はISOに相当する%Y
、%W
、%w
、したがって、これは出力します:
2013-06-24 00:00:00
Python 3.6+; from docs 。
import datetime
res = datetime.datetime.strptime("2018 W30 w1", "%Y %W w%w")
print res
曜日として1を追加すると、正確な現在の週の開始が生成されます。 timedelta(days = 6)を追加すると、週末が始まります。
datetime.datetime(2018, 7, 23)
これは、ゼロ週の問題を含む 便利な関数 です。