Python利用time与datetime模块生成当月工作日列表的方法
本文介绍在Python中通过time和datetime模块获取当月所有工作日(排除周六周日)的实现方法。代码包含两种实现逻辑,分别处理日期越界及周末运行时的特殊添加逻辑,适用于自动化工具如日报填写场景。
Python获取当月工作日列表背景与需求
近期在开发Python编写的自动日报填写工具时,因接口请求需携带特定时间格式(例如:2016-08-04),故深入研究并整理了Python中处理时间与日期的相关函数,在此进行简要记录。
该函数的核心功能在于提取当月所有的工作日数据,自动剔除周六和周日。此外,若脚本执行时间落在周六或周日,逻辑中会额外将当天日期加入结果列表中。
基于time与datetime模块的代码实现
#获取填写日报的日期,规则:把当月所有的工作日时间全部返回
def getDateByTime(self):
self.myDate=[]
t = str(time.strftime('%Y-%m-'))
for i in range(1,32):
timeStr=t+str(i)
try:
#字符串转换为规定格式的时间
tmp = time.strptime(timeStr,'%Y-%m-%d')
#判断是否为周六、周日
if (tmp.tm_wday !=6) and (tmp.tm_wday!=5):
self.myDate.append(time.strftime('%Y-%m-%d',tmp))
except:
print('日期越界')
if len(self.myDate)==0:
self.myDate.append(time.strftime('%Y-%m-%d'))
return self.myDate
def getDateByDateTime(self):
self.myDate=[]
now = datetime.datetime.now()
tmp = now.strftime('%Y-%m-')
#通过calendar获取到当月第一天的weekday,以及当月天数
t = calendar.monthrange(now.year, now.month)
for i in range(1,t[1]):
dateTmp = tmp+str(i)
myDateTmp = datetime.datetime.strptime(dateTmp,'%Y-%m-%d')
if myDateTmp.isoweekday() !=6 and myDateTmp.isoweekday() !=7:
self.myDate.append(myDateTmp.strftime('%Y-%m-%d'))
if len(self.myDate)==0:
self.myDate.append(now.strftime('%Y-%m-%d'))
return self.myDate
以上为Python使用time和datetime模块返回工作日列表的完整实现细节,希望能为读者提供实用参考。如有任何疑问,欢迎留言交流,小编将及时回复。感谢对本站的支持。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









