栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

找到datetime.isocalendar()逆函数的最佳方法是什么?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

找到datetime.isocalendar()逆函数的最佳方法是什么?

Python
3.8添加了fromisocalendar()方法:

>>> datetime.fromisocalendar(2011, 22, 1)datetime.datetime(2011, 5, 30, 0, 0)

Python的3.6添加的

%G
%V
%u
指示:

>>> datetime.strptime('2011 22 1', '%G %V %u')datetime.datetime(2011, 5, 30, 0, 0)

原始答案

我最近不得不自己解决此问题,并提出了以下解决方案:

import datetimedef 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 - deltadef 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)


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/647320.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号