找到datetime.isocalendar()的逆的最好方法是什么? [英] What's the best way to find the inverse of datetime.isocalendar()?
本文介绍了找到datetime.isocalendar()的逆的最好方法是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
Python datetime.isocalendar( )
方法返回给定的 datetime $ c的元组
(ISO_year,ISO_week_number,ISO_weekday)
$ c>对象。有相应的反函数吗?如果没有,是否有一个简单的方法来计算给定年,周数和星期几的日期?
The Python datetime.isocalendar()
method returns a tuple (ISO_year, ISO_week_number, ISO_weekday)
for the given datetime
object. Is there a corresponding inverse function? If not, is there an easy way to compute a date given a year, week number and day of the week?
推荐答案
我最近不得不自己解决这个问题,并提出了这个解决方案:
I recently had to solve this problem myself, and came up with this solution:
import datetime
def iso_year_start(iso_year):
"The gregorian calendar date of the first day of the given ISO year"
fourth_jan = datetime.date(iso_year, 1, 4)
delta = datetime.timedelta(fourth_jan.isoweekday()-1)
return fourth_jan - delta
def iso_to_gregorian(iso_year, iso_week, iso_day):
"Gregorian calendar date for the given ISO year, week and day"
year_start = iso_year_start(iso_year)
return year_start + datetime.timedelta(days=iso_day-1, weeks=iso_week-1)
几个测试用例:
>>> iso = datetime.date(2005, 1, 1).isocalendar()
>>> iso
(2004, 53, 6)
>>> iso_to_gregorian(*iso)
datetime.date(2005, 1, 1)
>>> iso = datetime.date(2010, 1, 4).isocalendar()
>>> iso
(2010, 1, 1)
>>> iso_to_gregorian(*iso)
datetime.date(2010, 1, 4)
>>> iso = datetime.date(2010, 1, 3).isocalendar()
>>> iso
(2009, 53, 7)
>>> iso_to_gregorian(*iso)
datetime.date(2010, 1, 3)
这篇关于找到datetime.isocalendar()的逆的最好方法是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文