2013-09-30 71 views
0

我想设计一个算法,它将根据开始周的日期设置计算周数。例如: - 如果我将开始日期设置为WEDNESDAY,并且目前为40周,并且其TUESDAY,则应打印40作为周数。如果是星期三或星期四,我应该得到41.在python中改变一周的开始日期后获取当前周数的算法?

把它想象成一个循环。从星期三到星期二,它应该被分配一个星期no + 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 

我如何设计它星期?

+1

您已经有算法了吗? '如果day> =星期三:week_num + = 1'转换为Python。 – justhalf

+0

如果一天不会比星期三大?把它想象成一个循环。从星期三到星期二,它应该被分配一个星期no + 1,然后当下一个星期三到来时,星期应该再次增加。 – PythonEnthusiast

+0

正是如果day> =星期三:week_num + = 1'说的话。根据你的解释,说现在是第40周,现在是星期二。输出是40,所以它是正确的。如果是星期三,则输出为41.再次,if将正确地产生输出。下一个星期一,week_num已经是41,我们不需要添加任何东西。所以它的输出将是41.我假设'week_num'在这里是从默认的python库中检索的。 – justhalf

回答

1

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

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

适用于所有情况。

+0

还应考虑'week = current_week - 1 if current_day> = set_week_day else current_week'或甚至'week = current_week - (current_day> = set_week_day)'。 –

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 
相关问题