Sadece bakmak, sana ihtiyacım var:
- ayrıştırmak her alan için kabul edilebilir değerler içeren beş diziler için chron Spec;
- Her alan için 'şimdi' ayrıştırma;
- dakika, saat, {gün-ayı VEYA haftanın günü günü), ayın yılı: geçerli değerle eşleşen veya bu değeri aşan en düşük dizi değerini, taşıma için düzeltir.
Hafta içi gün ve ayın eşzamanlı olarak nasıl işleneceğini bilmiyorum; Eminim bir yol var, ama öte yandan, aslında her ikisini de belirten bir özellik görmedim. Her ikisini de alırsanız bir işleyiciyi yazmak ve bir hata atmak yeterli olacaktır.
Düzenleme: Her ikisi de belirtildiğinde görünüşte günlük haftalık-ve günündeki ay, eğer hem ateş gerekiyordu - kural 'Çarşamba 15' ise, yani o tetiklenir Her Çarşamba günü her 15th ve.
croniter paket istediğini yapar:
import croniter
import datetime
now = datetime.datetime.now()
sched = '1 15 1,15 * *' # at 3:01pm on the 1st and 15th of every month
cron = croniter.croniter(sched, now)
for i in range(4):
nextdate = cron.get_next(datetime.datetime)
print nextdate
baskılar
2011-01-15 15:01:00
2011-02-01 15:01:00
2011-02-15 15:01:00
2011-03-01 15:01:00
gerçek bir yineleyici olarak yazılır olsaydı çok güzel olurdu rağmen
. Belki de bir sonraki projem var ;-)
Böyle bir şey yaptım ve doğru olması zor buldu (ve olası "özellikleri" sizin bir alt kümenizdir). Ben sadece bazı datetime calcs ile yaptım ve her tür 'spec' için fonksiyonlar. Birisinin daha iyi bir cevabı varsa ilgilenirim (çözüm muhtemelen kütüphane kullanacaktır: x) – Gerrat
Örnek biçiminin bir örneğini verebilir misiniz? – aaronasterling