Quand j'essayais d'obtenir le numéro de la semaine, Depuis que les phénomènes suivants ont été confirmés, la note de cause et de contre-mesure
import datetime
datetime.date(year=2017, month=1, day=1).isocalendar()
> (2016, 52, 7)
Pourquoi le premier jour de 2017 2016! ??
Selon l'article suivant, Calculer le numéro de semaine en Python
Définition du numéro de semaine ISO 8601 La semaine comprenant le premier jeudi est la première semaine, la semaine commence le lundi. Définition du numéro de semaine américain La semaine incluant le 1er janvier est la première semaine, la semaine commence le dimanche.
Cela signifie.
En d'autres termes, le résultat ci-dessus semble être correct au format ISO8601
.
Mais cette fois je veux le résultat de ```American` `` ...
Je n'ai pas trouvé de moyen de changer «« isocalendar () »« en «américain», alors j'ai écrit le code moi-même.
2020/03/27 postscript: Le code était incorrect, donc je l'ai corrigé.
def american_calendar(year, month, day):
#Datetime de l'année d'entrée.Créer des données de type de date
inp = datetime.date(year=year, month=month, day=day)
#Datetime le premier jour de l'année d'entrée.Créer des données de type de date
first = datetime.date(year=year, month=1, day=1)
#Premier,Calcul du jour
inp_how = (inp.weekday()+1) % 7 #+1 est de changer le jour pour commencer le dimanche
first_how = (first.weekday()+1) % 7
#Moins que,Calcul du numéro de semaine
#En haut à gauche du calendrier(Premier dimanche)Obtenez la date de
upper_left = first - datetime.timedelta(days=first_how)
#Obtenez le numéro de la semaine en calculant la différence du nombre de jours à partir de la date de base
inp_week = (inp - upper_left).days // 7
return year, inp_week, inp_how
Lorsque vous vérifiez le fonctionnement
american_calendar(year=2017, month=1, day=1)
> (2017, 0, 0)
Il renvoie maintenant la valeur souhaitée.
c'est tout!
Note autre que le travail d'un certain ingénieur: Calculer le numéro de semaine avec Python Documentation Python: date.isocalendar ()
Recommended Posts