2014-11-24 98 views
3

我需要将整周的星期几作为整数。Python将DayOfWeek读取为整数

如果我在这个月的日子里使用以下日期mydate.day我想在平日做同样的事情。

我试过mydate.weekday但这并不给我整数(星期日为0,星期六为6)。

有什么建议吗?

+1

你在使用某个库还是你自己写了这个类?如果是后者,我们可以看看你是如何定义你的班级的? – CoryKramer 2014-11-24 13:46:53

+0

import datetime // mydate = datetime.datetime.strptime('2005-01-01','%Y-%m-%d') – phicon 2014-11-24 13:47:36

+0

你能告诉我们'mydate.weekday()'返回吗?假设'mydate'是'datetime.datetime',那么它应该工作... Ref https://docs.python.org/2/library/datetime.html#datetime.date.weekday – 2014-11-24 13:50:06

回答

11

如果您正在使用datetime.datetime,使用datetime.datetime.weekday method

>>> 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,因为周一,6方法返回0代表星期日。

UPDATE

您还可以使用datetime.datetime.isoweekday这为周一,7返回1日。

>>> d.isoweekday() % 7 
1 
+2

您可能还会发现https://docs.python.org/2/library/datetime.html#datetime.date.isoweekday有用 - 它给出星期一= 1,...,星期日= 7。 – 2014-11-24 13:52:24

+0

我错过了() - mydate.weekday必须是mydate.weekday()谢谢你,会在几分钟内 – phicon 2014-11-24 13:55:55

+0

@TomDalton接受,谢谢你的评论。我更新了包含“isoweekday”的答案。 – falsetru 2014-11-24 14:00:06

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 
4

我有点困惑你的措辞:

(0星期日到6星期一)#星期一怎么会是6?

但我不知道,如果你想在isoweekday

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

编辑

在你的欲望的光星期天为0,你应该falsetru's answer去(编辑后):

>>> d.isoweekday() % 7 

或者简单地将Sund在你的代码中的其他地方可以使用0。

+0

对不起,我的意思1日星期一和星期六6.我的坏 – phicon 2014-11-24 14:02:28

+0

@phicon无后顾之忧。很高兴你找到你的答案。我的答案是一个很好的答案(并从我那里得到+1)。 – 2014-11-24 14:03:23