2

繰り返しイベントをサポートする予定表アプリケーションにpythondateutilモジュールを使用しています。rrulestr()関数を使用してicalrrulesを解析する機能が本当に気に入っています。また、rrule.between()を使用して、指定された間隔内の日付を取得するのは非常に高速です。

ただし、他の操作(つまり、スライスのリスト、before()、after()、...)を実行しようとすると、すべてがクロールを開始します。rrule.before(datetime.max)を使用して最後の日付を取得するだけの場合でも、dateutilはすべての日付を計算しようとしているようです。

これらの不要な計算を回避する方法はありますか?

4

1 に答える 1

4

私の推測ではおそらくそうではありません。datetime.maxより前の最後の日付は、datetime.maxまでのすべての繰り返しを計算する必要があることを意味し、それは合理的に多くの繰り返しになります。より単純な再発のいくつかのショートカットを追加することが可能かもしれません。たとえば、毎年同じ日に行われる場合、たとえば、その間の繰り返しを実際に計算する必要はありません。しかし、たとえば、3分の1ごとに何かが必要な場合や、最大の繰り返しがある場合などです。しかし、dateutilにはこれらのショートカットがないと思います。確実に実装するのはおそらくかなり複雑でしょう。

datetime.maxより前の最後の再発を見つける必要がある理由を聞いてもいいですか?結局のところ、それはほぼ8000年先のことです... :-)

于 2009-08-26T19:52:08.420 に答える