2011-03-02 34 views
7

Mô-đun datetime cung cấp phương thức date.isocalendar, đưa ra ngày, trả về theo định dạng ([year], [week], [weekday]). Làm thế nào để tôi quay trở lại? Được tặng ([year], [week], [weekday]) tuple, làm cách nào để có được đối tượng date?Python: Đối diện của `datetime.date.isocalendar()`

+0

Hot d * mn, điều này phức tạp hơn tôi nghĩ lúc đầu. Đầu tiên năm dương lịch * Thứ năm *!?! –

+3

Haha Chào mừng bạn đến với thế giới lịch, tận hưởng kỳ nghỉ của bạn :) –

+1

Tôi có một nghi ngờ dai dẳng rằng có một lý do rất tốt tại sao chức năng này không có trong Thư viện chuẩn :) –

Trả lời

4

EDIT Tìm thấy câu hỏi với giải pháp: What's the best way to find the inverse of datetime.isocalendar()?

Giải pháp của tôi đã có những sai lầm. Trên googling thấy câu hỏi trước đó mà sau khi thử nghiệm dưới đây làm việc. (Xem câu hỏi được trả lời hàng đầu ở trên liên kết để định nghĩa của iso_to_gregorian). (Về cơ bản, hãy tìm ngày bắt đầu năm iso và sau đó sử dụng timedelta để tìm ngày hiện tại từ ngày và số tuần.

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

Hãy thử điều này trên '1999,1,1'. Bạn sẽ có một tuần nghỉ ... –

+1

Yup ngay sau khi tôi thử nghiệm nó, tôi nhận ra tôi đã có những sai lầm. Thảo luận về câu hỏi stackoverflow 2008 đi qua các lý do các trường hợp cạnh không hoạt động và có một giải pháp tương đối đơn giản. –

+0

+1 để tìm câu trả lời đúng :) –

Các vấn đề liên quan