鉴于开始日期,我如何确定Python的"工作周"数量?我不能只是除以7,因为这不会给我正确的答案.
一个例子是2012年8月1日到当前日期(2012年8月13日)的开始日期将输出3周.
我基本上试图从足球赛季开始就弄明白,本周(整数)是什么.
我已经尝试过使用Pythons datetime模块,但它无济于事.
尝试使用datetime.weekday,datetime.isoweekday获取当周的当前日期,或使用更完整的datetime.isocalendar来获取当年的当前周,并使用这些作为偏移来计算对齐的差异.
所以你可以有这样的功能:
def week_difference(start, end):
assert start <= end
start_year, start_week, start_dayofweek = start.isocalendar()
end_year, end_week, end_dayofweek = end.isocalendar()
return ((end_year - start_year) * 52) - start_week + end_week
Run Code Online (Sandbox Code Playgroud)
使用方式如下:
import datetime as dt
# same week
In [1]: week_difference(dt.datetime(2012, 8, 1), dt.datetime(2012, 8, 1))
Out[1]: 0
# your example (see note below)
In [2]: week_difference(dt.datetime(2012, 8, 1), dt.datetime(2012, 8, 13))
Out[2]: 2
# across years
In [3]: week_difference(dt.datetime(2011, 8, 1), dt.datetime(2012, 8, 13))
Out[3]: 54
# year boundary: second last business week of 2011, to first business week of 2012
# which is the same business week as the last business week of 2011
In [4]: week_difference(dt.datetime(2011, 12, 20), dt.datetime(2012, 1, 1))
Out[4]: 1
In [5]: week_difference(dt.datetime(2011, 12, 18), dt.datetime(2012, 1, 1))
Out[5]: 2
Run Code Online (Sandbox Code Playgroud)
您可以1
根据您选择的周差异的语义添加到您的周输出.
归档时间: |
|
查看次数: |
723 次 |
最近记录: |