![](/img/trans.png)
[英]Python: Calculating Start Date and End Date of a week from the Week Number & Year From Pandas
[英]Python date calculating with year and week of year is incorrect
在计算2019年第一周的开始时遇到问题。
参数是year
和week_of_year
。 我们总是盯着星期一的一周。
获取特定年份第一天的代码:
from datetime import datetime
result = datetime.strptime('%04d-%02d-1' % (year, week_of_year), '%Y-%W-%w').date()
这适用于大多数年份,但不适用于year = 2019
和week_of_year = 1
,Python将其计算为日期2019-01-02
而不是预期的2018-12-31
。
我们当前解决此问题的解决方案是:
from datetime import datetime, timedelta
result = datetime.strptime('%04d-%02d-1' % (year, week_of_year), '%Y-%W-%w').date()
# Fixes issue with Python date computing returning the incorrect date
# This only occures for some years. E.g. 2019.
offset = result.isocalendar()[1] - datetime.strptime('%04d-01-01' % year, '%Y-%m-%d').date().isocalendar()[1]
if offset > 0:
result = result - timedelta(days=7)
关于如何解决此问题还有其他想法吗?
在咨询https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior之后 ,我可以知道%W
不遵守星期计数器的ISO定义,而只是从一年中的第一个星期一。 前几天放入周计数0 ...
您可以将%V
和%G
一起尝试:
result = datetime.strptime('%04d-%02d-1' % (year, 1), '%G-%V-%w').date()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.