1. ホーム
  2. python

日、時間、週、月単位で繰り返し処理を行うには?

2023-11-14 09:33:52

質問

日、時間、週、月単位で繰り返し処理を行うにはどうしたらよいでしょうか。

のようなものです。

for date in foo(from_date, to_date, delta=HOURS):
    print date

ここで、fooは関数で、イテレータを返します。私はカレンダーモジュールを見てきましたが、それは1つの特定の年または月に対してのみ動作し、日付の間では動作しません。

どのように解決するのですか?

使用方法 デートユーティル とそのrruleの実装を、このように使います。

from dateutil import rrule
from datetime import datetime, timedelta

now = datetime.now()
hundredDaysLater = now + timedelta(days=100)

for dt in rrule.rrule(rrule.MONTHLY, dtstart=now, until=hundredDaysLater):
    print dt

出力は

2008-09-30 23:29:54
2008-10-30 23:29:54
2008-11-30 23:29:54
2008-12-30 23:29:54

MONTHLYをYEARLY、MONTHLY、WEEKLY、DAILY、HOURLY、MINUTELY、SECONDLYのいずれかに置き換えてください。 dtstartとuntilを任意のdatetimeオブジェクトに置き換えてください。

このレシピは、MONTHLYを含むすべてのケースで動作するという利点があります。 私が見つけた唯一の注意点は、すべての月について存在しない日数を渡すと、それらの月をスキップすることです。