Python获取星期几的整数表示

3

我需要得到星期几的整数表示。

如果我对于月份使用mydate.day,那么我也希望能够对星期做同样的处理。

我尝试过mydate.weekday,但这并不能给我整数表示(0代表星期日,6代表星期六)。

有什么建议吗?


1
你是使用某个库还是自己编写了这个类?如果是后者,我们能看一下你如何定义你的类吗? - Cory Kramer
导入日期时间库 // mydate = datetime.datetime.strptime('2005-01-01', '%Y-%m-%d') - phicon
你能展示一下 mydate.weekday() 返回的结果吗?假设 mydate 是一个 datetime.datetime,那么它应该可以工作... 参考 https://docs.python.org/2/library/datetime.html#datetime.date.weekday - Tom Dalton
我的日期是从哪个包中来的? - Leo
3个回答

11

如果您正在使用datetime.datetime,请使用datetime.datetime.weekday方法

>>> d = datetime.datetime.now()
>>> d
datetime.datetime(2014, 11, 24, 22, 47, 3, 80000)
>>> d.weekday()  # Monday
0
>>> (d.weekday() + 1) % 7
1

你需要使用 (... + 1) % 7,因为该方法将星期一返回0,星期日返回6。

更新

你也可以使用datetime.datetime.isoweekday,它将返回1表示星期一,返回7表示星期日。

>>> d.isoweekday() % 7
1

2
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Tom Dalton
我错了,应该加上括号 -- mydate.weekday 应该变成 mydate.weekday() 谢谢,我会在几分钟内接受。 - phicon
@TomDalton,感谢您的评论。我更新了答案,包括 isoweekday - falsetru
@phicon,您能否更新一下您的问题?“0代表星期天,6代表星期一”对我来说没有意义。(您是不是想说星期六是6?) - falsetru

4

我对你的措辞有点困惑:

(0代表星期天,6代表星期一) # 为什么星期一是6?

但我想知道你是否需要 isoweekday

>>> from datetime import datetime
>>> d = datetime.now()
>>> d.isoweekday()
1                                 # Monday

编辑:

考虑到你希望星期天为0,你应该选择falsetru的答案(在编辑后):

>>> d.isoweekday() % 7

或者在您的代码中将星期日转换为0。

抱歉,我的意思是星期一1和星期六6。我说错了。 - phicon
@phicon 不用担心,很高兴你找到了答案。falsetru的回答很好(我还给他点了赞)。 - Justin O Barber

1

Python使用0代表星期一。请参阅weekday文档。

import datetime

now = datetime.datetime(2014, 11, 23)
print now
print now.weekday()

今天是星期日,所以打印出这个:

2014-11-23 00:00:00
6

这是一个星期一的例子:

import datetime

now = datetime.datetime.now()
print now
print now.weekday()

这是一个星期一,因此打印出这个:

2014-11-24 07:47:19.827000
0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接