2011-03-02 39 views
7

datetime模塊提供了一種方法date.isocalendar,給定一個日期,它以([year], [week], [weekday])的格式返回它。我該如何倒退?給定一個([year], [week], [weekday])元組,我如何獲得date對象?Python:與'datetime.date.isocalendar()'相反

+0

熱d *萬,這比我想象的第一個更復雜。第1周是包含了一週日曆年第一*星期四*!?! –

+3

哈哈。歡迎來到世界的日曆,享受您的逗留:) –

+1

我有一個很好的理由,爲什麼這個功能不在標準庫:) :) –

回答

4

編輯與發現的解決方案問題: What's the best way to find the inverse of datetime.isocalendar()?

我的解決方案有錯誤。在谷歌上看到以前的問題,經過測試下面的工作。 (有關iso_to_gregorian的定義,請參見上面回答的最高回答問題)。 (基本上可以找到一些ISO一年的開始日期,然後用timedelta找到從每天和每週數當前日期。

for i in range(-10000,10000,1): 
    x = datetime.datetime.today().date() + datetime.timedelta(i) 
    x_iso = datetime.datetime.isocalendar(x) 
    assert iso_to_gregorian(*x_iso) == x 
+3

試試這個在'1999,1,1'上。你會休息一週... –

+1

是的,只要我測試它,我意識到我有錯誤。 2008年stackoverflow問題的討論通過邊緣案例不工作的原因,並有一個相對簡單的解決方案。 –

+0

+1找到正確的答案:) –