当前位置:  开发笔记 > 编程语言 > 正文

如何使用Python选择一年中的所有星期日?

如何解决《如何使用Python选择一年中的所有星期日?》经验,为你挑选了2个好方法。

使用Python ...

如何在一年中选择所有星期日(或任何一天)?

[ '01/03/2010','01/10/2010','01/17/2010','01/24/2010', ...]

这些日期代表2010年的星期日.这也适用于我认为的一周中的任何一天.



1> sth..:

您可以使用datedatetime模块查找一年中的第一个星期日,然后继续添加七天,生成新的星期日:

from datetime import date, timedelta

def allsundays(year):
   d = date(year, 1, 1)                    # January 1st
   d += timedelta(days = 6 - d.weekday())  # First Sunday
   while d.year == year:
      yield d
      d += timedelta(days = 7)

for d in allsundays(2010):
   print(d)


@sjpatel:您需要将偏移计算更改为从第一个星期六而不是星期日开始.这可以用`timedelta(days =(5-d.weekday()+ 7)%7)`来完成.或者,更明确地`timedelta(days =(5 - d.weekday()if d.weekday()<= 5 else 7 + 5 - d.weekday()))

2> unutbu..:

使用dateutil模块,您可以这样生成列表:

#!/usr/bin/env python
import dateutil.relativedelta as relativedelta
import dateutil.rrule as rrule
import datetime
year=2010
before=datetime.datetime(year,1,1)
after=datetime.datetime(year,12,31)
rr = rrule.rrule(rrule.WEEKLY,byweekday=relativedelta.SU,dtstart=before)
print rr.between(before,after,inc=True)

虽然如果没有dateutil,找到所有星期日并不难,但是这个模块非常方便,特别是如果你有更复杂或更多的日期计算.

如果您使用的是Debian/Ubuntu,则dateutil由python-dateutil包提供.

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有