Maison  >  Article  >  développement back-end  >  Pourquoi la conversion des numéros de semaine en dates en Python échoue-t-elle avec « 2013-W26 » ?

Pourquoi la conversion des numéros de semaine en dates en Python échoue-t-elle avec « 2013-W26 » ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-11 02:31:03312parcourir

Why Does Converting Week Numbers to Dates in Python Fail with

Conversion des numéros de semaine en dates

Vous avez rencontré un problème en essayant de convertir un numéro de semaine en date à l'aide du code suivant :

import datetime
d = "2013-W26"
r = datetime.datetime.strptime(d, "%Y-W%W")
print(r)

Lors de l'exécution de ce code, vous vous attendiez à voir "2013-01-01 00:00:00", mais vous avez rencontré une erreur. Explorons la cause de ce problème et comment le résoudre.

Résoudre le problème

Pour convertir avec précision un numéro de semaine en date, vous avez besoin d'informations supplémentaires au-delà du numéro de semaine. lui-même, à savoir le jour de la semaine. L'ajout d'un jour de la semaine par défaut à votre code résoudra ce problème. Voici le code modifié :

import datetime
d = "2013-W26"
r = datetime.datetime.strptime(d + '-1', "%Y-W%W-%w")
print(r)

Explication de la modification

Les ajouts de motifs '-1' et '-%w' sont cruciaux dans cette modification. Le « -1 » indique à l'analyseur de choisir le lundi de cette semaine particulière, et le « -%w » ajuste le jour de la semaine par rapport au lundi. Par exemple, utiliser '-%w' renverrait dimanche si le numéro de semaine fourni correspond au lundi.

Comportement de %W et note de bas de page 4

Dans la documentation Python La section sur le comportement de strftime() et strptime(), la note de bas de page 4 fournit des informations précieuses : "Lorsqu'ils sont utilisés avec la méthode strptime(), %U et %W ne sont utilisés dans les calculs que lorsque le jour de la semaine et de l'année sont spécifiés."

Notes supplémentaires

Si vous avez affaire à une date de semaine ISO, vous pouvez utiliser %G-W%V-% toi à la place. Ces directives nécessitent Python 3.6 ou version ultérieure.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn