2013-09-30 18 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 
相關問題