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! ??
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" ...
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!
Beachten Sie andere als die Arbeit eines bestimmten Ingenieurs: Wochenzahl mit Python berechnen Python-Dokumentation: date.isocalendar ()
Recommended Posts