Python从工作日获取日期

Python从工作日获取日期,python,python-datetime,Python,Python Datetime,假设我有11节课要完成。我没有为这些会议设定日期,只是在工作日进行一次会议。比如说,在安排这些课程时,我选择了周一、周二和周三。这意味着在今天之后,我希望我的11次会议的日期是从现在起的4个星期一、4个星期二和3个星期三,之后我的会议将完成 我想自动获取这些天的日期,直到总共有11个日期 我真的希望这有意义。。。请帮帮我。我已经连续三个小时为这个挠头了 谢谢,您可以使用和对象轻松完成此操作 您可以使用CustomBusinessDay指定您的“工作日”,并从中创建日期范围: import pan

假设我有11节课要完成。我没有为这些会议设定日期,只是在工作日进行一次会议。比如说,在安排这些课程时,我选择了周一、周二和周三。这意味着在今天之后,我希望我的11次会议的日期是从现在起的4个星期一、4个星期二和3个星期三,之后我的会议将完成

我想自动获取这些天的日期,直到总共有11个日期

我真的希望这有意义。。。请帮帮我。我已经连续三个小时为这个挠头了

谢谢,

您可以使用和对象轻松完成此操作

您可以使用CustomBusinessDay指定您的“工作日”,并从中创建日期范围:

import pandas
from datetime import date

session_days = pd.offset.CustomBusinessDay(weekmask="Mon Tue Wed")
dates = pd.date_range(date.today(), freq=session_days, periods=11)

我不久前就想出来了,但我的网络死掉了。所需要的只是Dunhill和一些休息

导入日期时间
def get_dates():
#这是您想要的最大日期数。就我而言,是会话。
所需会话=11
#这些是您希望这些会话的工作日
天数=[1,2,3]
#一个空列表,用于存储您获得的日期
日期=[]
#初始化while循环的变量
当前会话=0
#我将从今天开始数数,但你可以选择任何日期
now=datetime.datetime.now()
#对于我的用例,我不希望在运行此函数的同一天进行会话。
#我将从第二天开始数数
如果now.weekday()以天为单位:
now=now+datetime.timedelta(天数=1)
当前_会话时!=所需的会议:
#在你想要的日子里每天迭代
对于以天为单位的天:
#这只是一个预防措施,因此for循环一旦达到最大日期数就会中断
#否则while循环将永远运行
如果当前会话==所需会话:
打破
#如果是星期六,你想跳到下个星期吗
如果now.weekday()==6:
#检查星期天是否在白天,添加它
如果在天内为0:
date=now+datetime.timedelta(天=1)
日期。附加(日期)
当前会话+=1
现在=日期
其他:
#解释一下。
如果现在.weekday()==天:
日期。追加(现在)
now=now+datetime.timedelta(天数=1)
当前会话+=1
#如果今天的工作日大于您迭代的日期,这意味着您已按数字顺序迭代了所有日期
#注意:只有当“天”列表中的天的数字顺序正确(表示0-6)时,此选项才有效。如果是随机的,你会有麻烦的
elif不是现在。工作日()>天:
difference=day-now.weekday()
date=now+datetime.timedelta(天数=差值)
日期。附加(日期)
现在=日期
当前会话+=1
#在for循环完成后重置循环,以便您可以跳到下周。
重置周期天数=6-现在。工作日()
如果重置周期天数=0:
原始_now=now+datetime.timedelta(天=1)
现在=原来的现在
其他:
原始\u now=now+datetime.timedelta(天=重置\u周期\u天)
现在=原来的现在
对于日期中的日期:(
打印(date.strftime(“%d/%m/%y”)、date.weekday()
顺便说一句,我知道这个答案与@Daniel Geffen的答案相比毫无意义。如果我是你,我肯定会选择他的答案,因为答案很简单。这只是我对我自己问题的贡献,以防有人想跳进“技术细节”,即仅仅使用datetime是如何做到的。对我来说,这是最好的,因为我在Python3.7中遇到了
\u bz2
的问题


谢谢大家的帮助。

您编写了什么代码来解决这个问题?所以作为起点,我想我们可以有两个列表。一个包含我们需要的所有工作日的
days=[1,2,3]
和一个空的
dates=[]
列表。我知道我们必须得到当前的一天,并将其与列表中的每一天进行比较,以查看它是否比今天更大。如果是,我们就忽略它,当然不是,这意味着应该在本周的那个工作日进行新的会话。我可以通过从迭代的工作日中减去todays day,然后将该数字添加到todays date中,以获得所需的日期,从而轻松获得该工作日。但我下周要做的是我不知道的事实上,让我在几分钟后给你看一些代码。我刚得到一个新的想法,我对Python3.7中的
\u bz2
有问题。熊猫安装正确。但是谢谢你的贡献。我真的很感激。