Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按星期几查找下一个日期_Python_Datetime - Fatal编程技术网

Python 按星期几查找下一个日期

Python 按星期几查找下一个日期,python,datetime,Python,Datetime,我正在使用“datetime”,并且在计算如何按星期几以“%Y-%m-%d”格式获取日期时遇到问题。例如: 既然今天是2013-04-01(周一),那么接下来的周二或周四会有什么代码?(输出应为2013-04-02-星期二) 或者,如果日期是2013-04-02,一个星期二,那么下一个周一、周三或周五的代码是什么?(输出应为2013-04-03-次日或周三) 谢谢,您可以尝试以下方式: from datetime import datetime from datetime import time

我正在使用“datetime”,并且在计算如何按星期几以“%Y-%m-%d”格式获取日期时遇到问题。例如:

既然今天是2013-04-01(周一),那么接下来的周二或周四会有什么代码?(输出应为2013-04-02-星期二)

或者,如果日期是2013-04-02,一个星期二,那么下一个周一、周三或周五的代码是什么?(输出应为2013-04-03-次日或周三)


谢谢,

您可以尝试以下方式:

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是星期日。)

这个想法应该很容易扩展到星期一、星期三、星期五。

这样做:

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') 
或者(也许更好,但不那么笼统):

印刷品:

2013-04-02 
2013-04-03 

这与Python或其日期和时间模块无关。您需要编写一个算法来计算它。感谢您向我展示weekday()方法。这就是我需要的!谢谢这是一个极好的回答。weekday()函数的有趣用法。谢谢,我学到了很多。
2013-04-02 
2013-04-03