Python: Geben Sie ein Datum und einen Wochentag an, um das Datum des nächsten Auftretens eines bestimmten Wochentages zu finden

9

Das ist ein bisschen schwierig zu erklären, also entschuldige ich mich, wenn das nicht viel Sinn ergibt.

Ich habe ein Programm, in dem ich etwas plane. Eine der Einstellungen besteht darin, eine Aufgabe an bestimmten Tagen wöchentlich auszuführen. Zum Beispiel wöchentlich am Montag, Mittwoch und Freitag.

Betrachten Sie das Beispiel, in dem die aktuelle Aufgabe für 1/2/2012 geplant ist, was ein Montag ist. Ich habe bereits eine Menge Code an dem Punkt gearbeitet, an dem ich weiß, dass die nächste Aufgabe am Mittwoch nach 1 / 2/2012. Alles, was ich tun muss, ist das tatsächliche Datum von diesem Mittwoch (1/4/2012) zu berechnen.

Ich habe tatsächlich den Wochentag als die entsprechende ganze Zahl von date.weekday (), also habe ich in diesem Fall 2, was Mittwoch darstellt.

Was ist der beste Weg, um so etwas zu handhaben? Ich habe das Gefühl, dass es eine ziemlich einfache Lösung geben sollte, aber es kommt mir nicht in den Sinn. Ich dachte daran, ein Kalenderobjekt zu verwenden, um den Wochentag zu finden, den ich möchte, aber das scheint übertrieben zu sein.

    
Jon 03.01.2012, 04:52
quelle

4 Antworten

7

Verwenden Sie timedelta , um zu einem Datum hinzuzufügen. Verwenden Sie beispielsweise ein Datum d als geplantes Datum für eine aktuelle Aufgabe und ein paar Tage next_day (der nächste Tag , an dem Sie die Aufgabe ausführen möchten).

%Vor%     
aganders3 03.01.2012, 05:04
quelle
13

Verwenden Sie dateutil.relativedelta :

%Vor%     
eumiro 03.01.2012 08:09
quelle
0

Wir wissen das:

  • Von Montag bis Mittwoch gibt es 2 Tage Unterschied.
  • Von Mittwoch bis Freitag gibt es 2 Tage Unterschied.
  • Von Freitag bis Montag gibt es 3 Tage Unterschied.

Dies ist so einfach wie das Hinzufügen der Tage der Differenz zwischen geplanten Aufgaben:

%Vor%

Dies würde uns als Ergebnis geben:

%Vor%     
juliomalegria 03.01.2012 05:06
quelle
0

Verwenden Sie dateutil , um mit der Planung und Wiederholungen zu arbeiten.

    
warvariuc 03.01.2012 06:41
quelle

Tags und Links