2012-06-06 336 views
2

我需要在PythonHOWTO計算周和最後一天的第一個日期星期在python

計算日期星期我需要這個

year = 2012 
week = 23 
(a,b) = func (year,week) 
print a 
print b 

>>>2012-04-06 
>>>2012-06-10 

你能幫助我嗎?

+9

這是一個漫長的屁股周 –

+7

@Anthony,你忘了一個宣傳,或者這只是你的一個[愛好](http://xkcd.com/37/)? –

+0

是的。 @Jonatan,[你試過什麼](http://whathaveyoutried.com)? –

回答

12

日期對象包含一個weekday()方法。

對於星期日的星期一6,這返回0。

(從google搜索)這裏是一個解決方案:http://www.protocolostomy.com/2010/07/06/python-date-manipulation/

我認爲這是可以做少一點冗長所以這裏是我的刺吧:

def week_magic(day): 
    day_of_week = day.weekday() 

    to_beginning_of_week = datetime.timedelta(days=day_of_week) 
    beginning_of_week = day - to_beginning_of_week 

    to_end_of_week = datetime.timedelta(days=6 - day_of_week) 
    end_of_week = day + to_end_of_week 

    return (beginning_of_week, end_of_week) 
+0

這不是在python中,但結果是相同的,我在'seq 0 52' ; ('現在','本地時間', '年初','$(($ i * 7))天')AS ws,date('now','localtime', 'start '('($ i * 7 + 7))天')as we;「; done | sqlite3這將生成SQL周限制的列表,並在第二遍我將用它作爲sumarize在第二SQL選擇我怎麼可能在這裏發送NEWLINE ?????回車未正常工作ussual –

+0

周1 2012-01-01至2012-01-07 每週2至2012-01-08 2012-01-14 每週3至2012-01-15 2012-01-21 周4 2012-01-22到2012-01-28 每週5 2012-01-29 2012-02-04到一週 6 2012-02-05 2012-02-11到一週 7 2012-02-12至2012年-02-18 第8周2012-02-19至2012-02-25 第9周2012-02-26至2012-03-03 –

+0

@JonatanWagner你要接受的答案嗎? –

2

我覺得@Anthony Sottile的答案應該是這樣的:

def week_magic(day): 
    day_of_week = day.weekday() 

    to_beginning_of_week = datetime.timedelta(days=day_of_week) 
    beginning_of_week = day - to_beginning_of_week 

    to_end_of_week = datetime.timedelta(days=6 - day_of_week) 
    end_of_week = day + to_end_of_week 

    return (beginning_of_week, end_of_week) 

它的工作原理!

0

我認爲他正在尋找的答案是在datetime.isocalendar(datetime) 它返回一個3元組,包含ISO年份,星期編號和星期幾。

從任何特定的年份(即'2015'),可以確定第一週的第一天,然後從那裏繼續使用timedelta函數添加日期以查找請求的特定周。有了這些信息,人們就可以返回那一週的第一天和最後一天。

5

有點過時的答案,但有一個很好的模塊,名爲isoweek真的可以完成。要回答原始問題,你可以這樣做:

from isoweek import Week  

week = Week(2012, 23) 
print(week.monday()) 
print(week.sunday()) 

希望這可以幫助任何人。

相關問題