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