【发布时间】:2013-05-27 00:54:02
【问题描述】:
对于给定的日期,我必须按照以下规则找到一年中的周数:
- 一周从星期日开始,到星期六结束。
- 一年中的第一周在 1 月的第一个星期六结束,只要它在该月至少四天,即使这意味着第一周从 12 月开始。
我知道datetime.datetime.isocalendar() 会返回类似的结果,但该周从星期一开始。 time.strftime('%U',<tuple>) 模块返回从星期日开始的星期数,但它认为一年中的第一周是在第一个星期六结束的(不考虑一周中至少有 4 天在 1 月)。有没有一个模块可以让我根据我上面的定义找到周数?否则有人可以建议一种方法来重载datetime.isocalendar()
编辑:我正在尝试以下方法
第 1 步:找到一年中的第一周,从星期日开始计算周数,不考虑 4 天的限制(基本上第一周应该包含一年中的第一个星期三)。
我用过
dt = datetime.date.today()
year = dt.year
first_Sunday = datetime.datetime.strptime('%d-00-0' % year, '%Y-%U-%w').date()
第 2 步:确定 so 获得的第一周是否包含第一个星期三。
但是由于某些奇怪的原因,datetime.datetime.strptime('2013-00-0', '%Y-%U-%w').date() 正在输出 date(2013, 1, 1),这显然是星期二!!
【问题讨论】:
-
欢迎您。如果我理解您需要知道给定日期的包含该日期的星期的序数(1 到 52 或 53 之间),我说得对吗?
-
@Luc125 感谢您的欢迎。是的,我想要一周的序数。
isocalendar()给出相同的值,但它从星期一开始一周。
标签: python datetime week-number weekday