【问题标题】:How to get week start dates and week number of each week in a year considering start day of the week is Monday in python?考虑到python中一周的开始日是星期一,如何获取一年中每周的一周开始日期和周数?
【发布时间】:2013-09-18 10:19:40
【问题描述】:

在 python 中,考虑到一周的开始日期是星期一,我如何获取一年中每周的开始日期?

假设开始日是星期日:

>>>import datetime as datetime

>>>dt = datetime .date(2013,12,30)
>>>dt.isocalendar()[1]
1

但是,结果不应该是1,因为 30-12-2013 仍然是 2013 年。

【问题讨论】:

  • 您查看过日历模块吗?里面可能有一些东西可以帮助你找到你需要的东西。
  • 我做了calendar.setfirstweekday(0) 将一周的第一天设置为星期一,但结果没有改变。
  • 其实按照ISO日历的定义,1的结果是正确的。见Mathematics of the ISO calendar

标签: python date week-number


【解决方案1】:

我不认为 isocalendar 的行为可以改变。

发件人:http://docs.python.org/2/library/datetime.html#datetime.date.isocalendar

ISO 年的第一周是一年中包含星期四的第一个(公历)日历周。

但是strftime可以显示周数:

%U "新一年中第一个星期日之前的所有日子都被认为是在第 0 周。" %W "新一年中第一个星期一之前的所有日子都被认为是在第 0 周。"

>>> import datetime
>>> dt = datetime.date(2013,12,30)
>>> dt.isocalendar()
(2014, 1, 1)
>>> dt.strftime("%U")
'52'

但是要回答您的第一个问题,您为什么不直接使用 datetime.timedelta 呢?

>>> import datetime
>>> dt = datetime.date(2013,12,30)
>>> w = datetime.timedelta(weeks=1)
>>> dt - w
datetime.date(2013, 12, 23)
>>> dt + w
datetime.date(2014, 1, 6)
>>> dt + 10 * w
datetime.date(2014, 3, 10)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-27
    • 2011-10-07
    • 1970-01-01
    • 2019-11-21
    • 2022-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多