当前位置: 首页 > 面试题库 >

从Python中的ISO周编号获取日期

司寇研
2023-03-14
问题内容

我有一个ISO 8601年和周的编号,我需要将此值转换为该周(星期一)的第一天的日期。我怎样才能做到这一点?

datetime.strptime()同时使用%W%U指令,但都不遵守datetime.isocalendar()使用的ISO
8601工作日规则。

更新:
Python的3.6支持的%G%V%u指令也存在于libc中,使这一个班轮:

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

更新2 :Python
3.8添加了该fromisocalendar()方法,该方法更加直观:

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

问题答案:

%W将第一个星期一定为第1周,但ISO定义第1周为1月4日。所以从

datetime.strptime('2011221', '%Y%W%w')

如果第一个星期一和1月4日分别在不同的星期内,请假。如果1月4日是星期五,星期六或星期日,则后者是这种情况。因此,以下应该工作:

from datetime import datetime, timedelta, date
def tofirstdayinisoweek(year, week):
    ret = datetime.strptime('%04d-%02d-1' % (year, week), '%Y-%W-%w')
    if date(year, 1, 4).isoweekday() > 4:
        ret -= timedelta(days=7)
    return ret


 类似资料:
  • 问题内容: 我有一个随机日期数组(不是来自MySQL)。我需要按一周将它们分组为Week1,Week2,依此类推,直到Week5。 我所拥有的是: 我需要的是一个通过提供日期来获取月份的星期数的功能。 我知道可以通过执行操作获得 周号,但是本周号是年份(1-52)之间的数字,但是我只需要一个月的周号,例如,在2015年9月有5周: 第1周=第1至第5 第2周= 6日至12日 第3周= 13日至19

  • 我在我的项目中实现了一个calendarview,我可以获取月份、月份和年份,但我找不到任何方法来获取星期几,我的代码是这样的: 当我在日历中选择一天时,我需要得到一周的时间,我试图得到答案,但我找不到。 对不起我的英语。

  • 问题内容: 我想找到星期一,星期二,星期三等的日期戳。如果这个星期还未到这一天,我希望该日期为本周,否则为下周。谢谢! 问题答案: 看到 通过查看星期数,您可能会发现自己是否已经过了这一天:

  • 问题内容: 如何找出上一个(上一个)“星期五”或指定日期之后的其他日期的日期? 问题答案: 我不会给出答案(请先尝试一下!),但是,也许这些技巧可以为您提供帮助。 您首先需要确定您所在的星期几。您可能想看一下Java的Calendar类,以了解如何做到这一点。 确定日期后,请考虑模数运算符以及如何使用该运算符向后移动以从当前所在的日期开始寻找所需的前一天。(请记住,一周是7天,一周中的每一天在这7

  • 问题内容: 假设我有个约会2013年6月20日 如何获取上周的日期范围,即本例中的6月9日至6月15日。 另外,如果日期是2013年6月2日 范围应该是5月26日至6月1日 问题答案: 这是基于Java日历的解决方案 输出 它已本地化,在我的“语言环境”周中,从星期一开始

  • 在PowerShell中,有没有办法将ISO 8601指定的持续时间转换成DateTime对象?例如,PT30M是30分钟前,因此如果现在的时间是< code>2019-07-31 17:00:00,我希望时间戳为< code>2019-07-31 16:30:00。 我尝试过显而易见的 - 但这(毫不奇怪地失败了) Get Date:输入对象不能绑定到命令的任何参数,因为命令不接受管道输入,或者