[Python] Erhalten von Wochenzahlen im amerikanischen Stil

Zweck dieses Artikels

Als ich versuchte, die Wochennummer zu bekommen, Da die folgenden Phänomene bestätigt wurden, wurde die Ursache und Gegenmaßnahme notiert

import datetime
datetime.date(year=2017, month=1, day=1).isocalendar()

> (2016, 52, 7)

Warum ist der erste Tag von 2017 2016! ??

Ursache

Gemäß dem folgenden Artikel Wochennummer in Python berechnen

Definition der ISO 8601-Wochennummer Die Woche einschließlich des ersten Donnerstag ist die erste Woche. Die Woche beginnt am Montag. Definition der amerikanischen Wochennummer Die Woche einschließlich des 1. Januar ist die erste Woche. Die Woche beginnt am Sonntag.

Das bedeutet. Mit anderen Worten, das obige Ergebnis scheint im Format "ISO8601" korrekt zu sein. Aber diesmal möchte ich das Ergebnis von "American" ...

Gegenmaßnahmen

Ich habe keine Möglichkeit gefunden, "isocalendar ()" in "American" zu ändern, also habe ich den Code selbst geschrieben.

Nachskript 2020/03/27: Der Code war falsch, also habe ich ihn behoben.

def american_calendar(year, month, day):
    #Datumszeit des Eingabejahres.Erstellen Sie Datumsarten
    inp = datetime.date(year=year, month=month, day=day)
    #Datetime am ersten Tag des Eingabejahres.Erstellen Sie Datumsarten
    first = datetime.date(year=year, month=1, day=1)

    #Zuerst,Berechnung des Tages
    inp_how = (inp.weekday()+1) % 7 #+1 ist, den Tag zu ändern, um am Sonntag zu beginnen
    first_how = (first.weekday()+1) % 7
    
    #Weniger als,Berechnung der Wochennummer
    #Oben links im Kalender(Erster Sonntag)Holen Sie sich das Datum von
    upper_left = first - datetime.timedelta(days=first_how)

    #Ermitteln Sie die Wochennummer, indem Sie die Differenz zwischen der Anzahl der Tage und dem Basisdatum berechnen
    inp_week = (inp - upper_left).days // 7
    
    return year, inp_week, inp_how

Wenn Sie den Betrieb überprüfen

american_calendar(year=2017, month=1, day=1)

> (2017, 0, 0)

Es gibt jetzt den gewünschten Wert zurück.

das ist alles!

Referenz

Beachten Sie andere als die Arbeit eines bestimmten Ingenieurs: Wochenzahl mit Python berechnen Python-Dokumentation: date.isocalendar ()

Recommended Posts

[Python] Erhalten von Wochenzahlen im amerikanischen Stil
Primzahl in Python
Beurteilung von Primzahlen mit Python
Erkennen Sie Einzelbuchstaben mit Python OCR
Zahlen durch 3 Ziffern trennen (Python)
Behandeln Sie komplexe Zahlen in Python
Spielen Sie handschriftliche Zahlen mit Python Part 1
Testen mit Zufallszahlen in Python
[Python] Woche 1-3: Nummerntyp und Operation
[Python] Konvertiert natürliche Zahlen in Ordnungszahlen
Konvertieren Sie die Dezimalzahl in n-ary [Python]
Das Gesetz der Zahlen in Python
[Python] nCr mod Primzahlen berechnen
[Python] Ändere das Alphabet in eine Zahl