Python: Nummer der Woche in einem Monat

8

Bei Angabe eines Datums:

%Vor%

Wie kann ich erfahren, dass dies die dritte Woche des Monats ist?

Was ist, wenn ich diese Daten möchte?

%Vor%

Ich verstehe, dass nur Februar 4 Wochen hat, wenn das angegebene Datum in einem Schaltjahr (Bissextil) ist.

    
Francisco Tomé Costa 11.08.2011, 16:11
quelle

7 Antworten

8
%Vor%     
unutbu 11.08.2011, 16:22
quelle
9

Der in anderen Antworten gezeigte moduloartige Ansatz kann irreführend sein. Stellen Sie sich Wochen im Jahr vor. Es gibt 52 Brocken von 7 Tagen in jedem Jahr 365 Tage, mit einem Tag übrig. Also, wenn für mein erstes Jahr die 52. Woche am 30. Dezember endet, und ich habe den 31. Dezember übrig, um mir Sorgen zu machen.

Ich könnte entweder denken, dass es 53 Wochen im Jahr gibt und die 53. Woche am 31. Dezember, 1. Januar, 2. Januar, 3. Januar ... Oder, konventioneller, denke ich dass die erste Woche des nächsten Jahres tatsächlich am 31. Dezember beginnt. So macht es dein Tagebuchbuchbuch.

Das bedeutet natürlich, dass im nächsten Jahr die 52. Woche nicht am 30. Dezember, sondern am 29. Dezember endet. Und jedes Jahr schleicht es sich einen Tag nach dem anderen zurück, bis zum 6. Jahr, in dem wir das Ende der 52. Woche um 6 Tage zurückgelegt haben (und für ein gutes Maß in einen Schalttag geworfen wurden), so dass die gesamte 1. Woche 2017 wäre im Jahr 2016 enthalten, und das wäre albern. Also 2016 wird 53 Wochen haben.

Die gleiche Logik gilt für Monate, aber es kann schwieriger sein, sie zu erkennen. Leider wählen Sie August 2011, die eine ordentliche Anordnung hat, den 1. des Monats an einem Montag zu beginnen.

%Vor%

29 von Aug ist in der 5. Woche des Auges, aber mit derselben Logik, würde das 1., 2. 3. 4. Sept auch in der 5. Woche des Auges sein und so kann nicht in der 1. Woche des Sept. sein.

Also 29 September wäre, durch die einfache Teilung der Anzahl der Tage mit 7 Ansatz, in der 5. Septemberwoche, aber mit Blick auf Kalender oben, wenn 1-4 September im August sind, dann 29. September ist in der 4. Woche vom September.

Es hängt alles von Ihrer Definition ab, wann eine Woche beginnt.

%Vor%

Oben bedeutet Woche 0, dass die Woche nicht Teil dieses Monats ist. Also 1. September ist in der 5. Woche des August.

NB

Ich möchte @unutbu antworten, aber ich habe nicht genug Punkte, denke ich. Der Modulo 7-Ansatz scheitert im September 2011.

%Vor%

aus dem obigen Kalender, 1. September ist in Woche eins, aber das bedeutet, dass der 28. nicht in Woche 4 sein kann - er muss entweder in Woche 5 sein, oder 1. ist in Woche 0 ...

    
you cad sir - take that 11.08.2011 17:02
quelle
2

Dieses (etwas ungeschickte) Beispiel, das Kalendermodul verwendend ...

%Vor%

... wird die Antwort für 2011-02-28 falsch lauten, wenn die Wochen nicht am Dienstag beginnen.

    
Marty 11.08.2011 17:42
quelle
1

Vielleicht hilft Ссылка .

Ansonsten ist es nur Mathe.

%Vor%     
lazy1 11.08.2011 16:22
quelle
1

Wie wäre es damit? Wir geben das Datum an, für das wir die Woche suchen. Wir setzen das Datum auf den ersten Tag des Monats in einer neuen Variablen zurück. Wir erstellen dann die Woche im Jahr für den ersten Tag und unser gegebenes Datum. Subtrahiere den ersten Isoweek vom Isoweek des gegebenen Datums und füge einen hinzu. Sie fügen einen hinzu, um die Nullindexnummer zu korrigieren. Dies sollte die Wochennummer im Monat angeben.

%Vor%     
Issac Gable 12.07.2017 23:39
quelle
0
%Vor%

Im Allgemeinen finden Sie die Obergrenze der Division: Decke von (x / y) = (x + y-1) / y

    
love_me_some_linux 11.08.2011 16:26
quelle
0

Um den Kommentar von @Usagi zu berücksichtigen:

%Vor%

Die folgende Gleichung verwaltet, dass der erste Tag eines Monats nicht notwendig ist, ein Montag:

%Vor%
  

Die -2 und +2 erlauben es, eine Wochennummer zwischen 1 und 6 zu bekommen

    
Mathia Haure-Touzé 06.12.2017 22:47
quelle

Tags und Links