This question already has answers here:
How do I get the day of week given a date?
(27 个回答)
8年前关闭。
我正在使用“日期时间”,但无法弄清楚如何按星期几以“%Y-%M-%d”格式获取日期。例如:
由于今天是 2013-04-01(星期一),接下来的星期二或星期四什么代码会抓取? (输出应为 2013-04-02 - 星期二)
或者如果日期是 2013-04-02,一个星期二,下一个星期一、星期三或星期五的代码是什么? (输出应为 2013-04-03 - 第二天或周三)
谢谢,
或者(也许更好但不那么普遍):
打印:
(27 个回答)
8年前关闭。
我正在使用“日期时间”,但无法弄清楚如何按星期几以“%Y-%M-%d”格式获取日期。例如:
由于今天是 2013-04-01(星期一),接下来的星期二或星期四什么代码会抓取? (输出应为 2013-04-02 - 星期二)
或者如果日期是 2013-04-02,一个星期二,下一个星期一、星期三或星期五的代码是什么? (输出应为 2013-04-03 - 第二天或周三)
谢谢,
最佳答案
这有效:
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
关于python - 按星期几查找下一个日期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15754254/