[Python] Obtention de numéros de semaine à l'américaine

Objectif de cet article

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! ??

Cause

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` `` ...

Contre-mesures

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!

référence

Note autre que le travail d'un certain ingénieur: Calculer le numéro de semaine avec Python Documentation Python: date.isocalendar ()

Recommended Posts

[Python] Obtention de numéros de semaine à l'américaine
Nombre premier en Python
Juger les nombres premiers avec python
Reconnaître les nombres à une seule lettre avec Python OCR
Séparez les nombres par 3 chiffres (python)
Gérer les nombres complexes en Python
Jouez des nombres manuscrits avec Python Partie 1
Tester avec des nombres aléatoires en Python
[python] week1-3: Type de nombre et opération
[Python] Convertit les nombres naturels en nombres ordinaux
Convertir décimal en n-aire [python]
La loi des nombres en python
[Python] nCr mod Calculer les nombres premiers
[Python] Changer l'alphabet en nombre