Pythonic /创建工作日日期对象范围的最简单方法?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Pythonic /创建工作日日期对象范围的最简单方法?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1642字,纯文字阅读大概需要3分钟。
内容图文
![Pythonic /创建工作日日期对象范围的最简单方法?](/upload/InfoBanner/zyjiaocheng/659/6253d6121a1844cc85e7cba9816658fd.jpg)
我试图考虑最干净/ pythonic的方式来创建仅给定开始日期和结束日期的工作日的日期对象列表.这是我能想到的:
sdate = datetime.date(2013, 9, 1)
edate = datetime.date(2013, 9, 30)
weekdays = [sdate + datetime.timedelta(days=i)
for i in range((edate - sdate).days+1)
if (sdate + datetime.timedelta(days=i)).weekday() not in (5, 6)]
要么
alldays = (sdate + datetime.timedelta(days=i) for i in range((edate - sdate).days+1))
weekdays = [d for d in alldays if d.weekday() not in (5, 6)]
像这样的东西被认为是干净的,还是我只是荒唐而应该吸吮它并创建一个for循环?
解决方法:
我会考虑dateutil.rrule(pip install python-dateutil):
import datetime
from dateutil import rrule
start = datetime.datetime(2013, 9, 1)
end = datetime.datetime(2013, 9, 30)
rule = rrule.rrule(dtstart=start, freq=rrule.DAILY,
byweekday=[rrule.MO, rrule.TU, rrule.WE, rrule.TH, rrule.FR]
)
rule.between(start, end, inc=True)
[datetime.datetime(2013, 9, 2, 0, 0),
datetime.datetime(2013, 9, 3, 0, 0),
datetime.datetime(2013, 9, 4, 0, 0),
datetime.datetime(2013, 9, 5, 0, 0),
datetime.datetime(2013, 9, 6, 0, 0),
datetime.datetime(2013, 9, 9, 0, 0),
datetime.datetime(2013, 9, 10, 0, 0),
datetime.datetime(2013, 9, 11, 0, 0),
datetime.datetime(2013, 9, 12, 0, 0),
datetime.datetime(2013, 9, 13, 0, 0),
datetime.datetime(2013, 9, 16, 0, 0),
datetime.datetime(2013, 9, 17, 0, 0),
datetime.datetime(2013, 9, 18, 0, 0),
datetime.datetime(2013, 9, 19, 0, 0),
datetime.datetime(2013, 9, 20, 0, 0),
datetime.datetime(2013, 9, 23, 0, 0),
datetime.datetime(2013, 9, 24, 0, 0),
datetime.datetime(2013, 9, 25, 0, 0),
datetime.datetime(2013, 9, 26, 0, 0),
datetime.datetime(2013, 9, 27, 0, 0),
datetime.datetime(2013, 9, 30, 0, 0)]
内容总结
以上是互联网集市为您收集整理的Pythonic /创建工作日日期对象范围的最简单方法?全部内容,希望文章能够帮你解决Pythonic /创建工作日日期对象范围的最简单方法?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。