2014-11-24 64 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