我使用「datetime」,並且無法確定如何在一週中的某天以格式「%Y-%M-%d」獲取日期。例如:查找下一個日期的一週中的日期
由於今天是2013-04-01(星期一),因此代碼會在接下來的週二或週四抓取哪些代碼? (輸出應該是2013年4月2日 - 星期二)
或者如果日期是2013年4月2日星期二,哪個代碼會抓取下一個星期一,星期三或星期五? (輸出應該是2013年4月3日 - 第二天或週三)
感謝,
我使用「datetime」,並且無法確定如何在一週中的某天以格式「%Y-%M-%d」獲取日期。例如:查找下一個日期的一週中的日期
由於今天是2013-04-01(星期一),因此代碼會在接下來的週二或週四抓取哪些代碼? (輸出應該是2013年4月2日 - 星期二)
或者如果日期是2013年4月2日星期二,哪個代碼會抓取下一個星期一,星期三或星期五? (輸出應該是2013年4月3日 - 第二天或週三)
感謝,
這工作:
import datetime as dt
dow={d:i for i,d in
enumerate('Mon,Tue,Wed,Thu,Fri,Sat,Sun'.split(','))}
def next_dow(d,day):
while d.weekday()!=day:
d+=dt.timedelta(1)
return d
d1=min(next_dow(dt.datetime(2013,4,1),day)
for day in (dow['Tue'],dow['Thu']))
d2=min(next_dow(dt.datetime(2013,4,2),day)
for day in (dow['Mon'],dow['Wed'],dow['Fri']))
for d in d1,d2:
print d.strftime('%Y-%m-%d')
或(也許更好,但少將軍):
def next_dow(d,days):
while d.weekday() not in days:
d+=dt.timedelta(1)
return d
d1=next_dow(dt.datetime(2013,4,1),(dow['Tue'],dow['Thu']))
d2=next_dow(dt.datetime(2013,4,2),(dow['Mon'],dow['Wed'],dow['Fri']))
for d in d1,d2:
print d.strftime('%Y-%m-%d')
打印:
2013-04-02
2013-04-03
謝謝!這是一個很好的迴應。有趣的使用weekday()函數。謝謝,瞭解了很多。 –
你可以嘗試這樣的事:
from datetime import datetime
from datetime import timedelta
def return_next_tues_thur(dt):
while True:
dt += timedelta(days=1)
dow = dt.strftime(%w)
if dow == 2 || dow == 4:
return dt
dt = datetime.now() # Or you set it: dt = datetime(2013, 4, 1)
next_tues_thur = return_next_tues_thur(dt)
print next_tues_thur.strftime("%Y-%m-%d")
它使用strftime
方法和%w
修改得到來自datetime
對象的星期幾。 (%w
將返回範圍爲0到6的整數,其中0表示星期日。)
此構思應易於擴展到週一/週三/週五。
這是不相關的Python或它的日期和時間模塊。你需要編寫一個計算這個的算法。 – wRAR
感謝您向我展示weekday()方法。這就是我需要的! –