【发布时间】:2014-08-24 07:40:09
【问题描述】:
我正在尝试根据星期几来确定日期,但有些麻烦。
date.weekday() 返回星期几,其中星期一为 0,星期日为 6。
date.strftime() 和 date.strptime() 的 %w 指令使用 0 表示周日,6 表示周六。
当试图从date.weekday() 中找出一个给定周数的日期时,这会导致一些非常烦人的问题。
有没有更好的方法从周数中获取日期?
编辑:
添加示例。
import datetime
original_date = datetime.date(2014, 8, 24)
week_of_the_date = original_date.isocalendar()[1] # 34
day_of_the_date = original_date.isocalendar()[2] # 7
temp = '{0} {1} {2}'.format(*(2014, week_of_the_date, day_of_the_date-1))
date_from_week = datetime.datetime.strptime(temp, '%Y %W %w')
week_from_new_date = date_from_week.isocalendar()[1] # 35!!
编辑 2:
我最终把日期的东西放在视图中(使用 jQuery UI),它有更一致的星期概念。
【问题讨论】:
-
在这种情况下,星期数到底是什么,
date.weekday与它有什么关系?示例输入和输出会很有帮助。 -
啊,不知道这个问题,非常丑陋的不一致!不同但相关的问题here
-
我认为
weekday和strftime使用%W的周日和周一的区别是没有实际意义的 - 你可以使用isoweekday来让它们排队。真正的问题是strftime,基于底层的 C 函数,确定一年中的第一周与 ISO 定义不同。使用%W,文档说:“第一个星期一之前的新年中的所有日子都被认为是在第 0 周”。 ISO日历将包含第一个星期四的那一周计为第一周,原因我不明白,而且看起来没有比链接的答案更好的方法来扭转它。 -
@SylvainLeroux - 我想那里有足够的实际信息,我不想因为指出一个骗子而受到赞扬。
标签: python