【发布时间】:2016-05-26 18:49:03
【问题描述】:
日历模块具有以
开头的星期几常量calendar.MONDAY
Out[60]: 0
但是,有时必须与使用约定 Sunday = 0 的系统(可能用 JavaScript 编写)进行交互。Python 是否提供此类常量?
【问题讨论】:
标签: python datetime calendar weekday
日历模块具有以
开头的星期几常量calendar.MONDAY
Out[60]: 0
但是,有时必须与使用约定 Sunday = 0 的系统(可能用 JavaScript 编写)进行交互。Python 是否提供此类常量?
【问题讨论】:
标签: python datetime calendar weekday
希望这会有所帮助:
from datetime import datetime
weekdays_dic ={0:'Mon', 1:'Tue',2:'Wed',3:'Thu',4:'Fri',5:'Sat', 6:'SUN'}
print(weekdays_dic[datetime.today().weekday()])
【讨论】:
我只是将它与mydate.isoweekday() 一起使用,就可以了。
def weekday_sun_zero(self, isoweekday):
return 0 if isoweekday == 7 else isoweekday
【讨论】:
return isoweekday % 7为简洁起见
Python 标准库中没有这样的常量。然而,定义你自己的很简单:
SUN, MON, TUE, WED, THU, FRI, SAT = range(7)
或者,当使用 Python 3.4 或更高版本时,您可以使用enum module functional API:
from enum import IntEnum
Weekdays = IntEnum('Weekdays', 'sun mon tue wed thu fri sat', start=0)
weekday == Weekdays.wed
然后您还可以通过调用enum.Enum 对象将工作日整数映射到枚举值:
weekday_enum = Weekdays(weekday)
我使用了 3 个字母的缩写,但如果您觉得更易读,您可以随意使用全名。
【讨论】:
IntEnum怎么样?
IntEnum没有意义;我们已经在自动编号,所以不能意外使用非整数值。
datetime.datetime.isoweekday() 的问题,它使用编号为 1 到 7 的周一至周日? :-)
IntEnum 的目的是避免使用.value。我得到Weekdays.wed == 2 和IntEnum 没有.value。