Eri*_*and 43 python iso week-number
我有ISO 8601年和周编号,我需要将其翻译为该周(星期一)第一天的日期.我怎样才能做到这一点?
datetime.strptime()接受a %W
和a %U
指令,但都不遵守datetime.isocalendar()使用的ISO 8601工作日规则.
更新: Python的3.6支持%G
,%V
并%u
指令也存在于libc中,使这一个班轮:
>>> datetime.strptime('2011 22 1', '%G %V %u')
datetime.datetime(2011, 5, 30, 0, 0)
Run Code Online (Sandbox Code Playgroud)
小智 68
使用isoweek模块,您可以使用:
from isoweek import Week
d = Week(2011, 40).monday()
Run Code Online (Sandbox Code Playgroud)
Uwe*_*nig 36
%W将第一个星期一视为第1周,但ISO将第1周定义为包含1月4日.所以结果来自
datetime.strptime('2011221', '%Y%W%w')
Run Code Online (Sandbox Code Playgroud)
如果第一个星期一和1月4日是在不同的星期,则会被一个人拒之门外.如果1月4日是星期五,星期六或星期日,后者就是这种情况.所以以下应该有效:
from datetime import datetime, timedelta, date
def tofirstdayinisoweek(year, week):
ret = datetime.strptime('%04d-%02d-1' % (year, week), '%Y-%W-%w')
if date(year, 1, 4).isoweekday() > 4:
ret -= timedelta(days=7)
return ret
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
22648 次 |
最近记录: |