在python中更改一周的开始日之后获取当前周数的算法?

时间:2013-09-30 09:27:04

标签: python datetime

我想设计一种算法,根据开始工作日设置来计算周数。例如: - 如果我将开始日设置为WEDNESDAY并且当前为其40周及其TUESDAY,则应将40作为周数打印。如果是星期三或星期四,我应该得到41。

把它想象成一个循环。从星期三到星期二,应该分配一周没有+ 1,然后在下周三到来时,星期应该再次增加。

我尝试使用calendar.setfirstweekday(calendar.WEDNESDAY)然后改变我的系统机器时间,我得到的每周都是40作为周数。

如何在python中设计算法?

我有一个月的类似问题,但我已经为它设计了一个解决方案。就是这样。

current_date = datetime.datetime.now()
if current_date.day < gv.month_start_date:
    month   = current_date.month -1
    if month == 0:
        month = 12
    else:
        month = current_date.month

我怎样才能设计一周?

2 个答案:

答案 0 :(得分:1)

我终于为此设计了一个解决方案。

if current_day >= set_week_day:
    week = current_week
else:
    week = current_week - 1

适用于所有情况。

答案 1 :(得分:0)

datetime in python有一个名为isocalender的函数来获取ISO周数(从星期一开始)

import datetime
datetime.date(2013, 9, 30).isocalendar()[1]

你可以使用一点逻辑(这个脚本应该在周三开始)

import datetime

day = 30
month = 9
year = 2013
weekcount = datetime.date(year, month, day).isocalendar()[1]
if datetime.date(year, month, day).isocalendar()[2] <= 3: # start on wednesday
    weekcount -= 1
print weekcount