1

いくつかの単純なルールに準拠する次の時点を計算しようとしています。

リストに記載されている平日のみを含めます (以下の例では、月~金)。リストされている時間 (12:00、18:00) のみを返します。

After提供された日付から始めて、最初のそのようなポイントを取得したいと思います。

私はこれまでのところ持っていますが、現在の時間からの一定のオフセットのように見える「丸められていない」時間を返しています

def NextRunTime(After=django.utils.timezone.now()):
    Sched = {'Hours': [12,18], 'Days': [0,1,2,3,4]}
    rule = DateRule.rrule(DateRule.HOURLY,
                byweekday=Sched['Days'],
                byhour=Sched['Hours'],
                dtstart=After,
                count=1)
    return rule[0]

これは現在戻っ2013-05-01 18:53:39+01てきており、現在の時刻に関連しているようです。

rrule を取得して真夜中を基準にした時間を使用し、日付を返す方法を誰かに教えてもらえますかAfter?

望ましい出力の明示的な例

After           Output
Mon 10:11:12    Mon 12:00:00
Mon 11:22:33    Mon 12:00:00
Mon 12:00:01    Mon 18:00:00
Fri 12:00:01    Fri 18:00:00
Fri 18:00:01    Mon 12:00:00 (Following Monday)
4

2 に答える 2

1

dtstartminutes=0 および seconds=0 で使用するか、返された値から自分で時間を切り取る必要があります。

これはrrule動作が期待される方法であるため、渡された にいくつかの間隔が追加さdtstartれます。この場合、分と秒が含まれます。

于 2013-05-01T15:33:23.910 に答える