web-dev-qa-db-fra.com

Comment puis-je rendre compte de la période (AM / PM) avec datetime.strptime?

Plus précisément, j'ai un code qui simplifie à ceci:

from datetime import datetime
date_string = '2009-11-29 03:17 PM'
format = '%Y-%m-%d %H:%M %p'
my_date = datetime.strptime(date_string, format)

# This prints '2009-11-29 03:17 AM'
print my_date.strftime(format)

Ce qui donne? Est-ce que Python ignore simplement le spécificateur de période lors de l'analyse des dates ou est-ce que je fais quelque chose de stupide?

127
Triptych

Le Python time.strftime docs dire:

Lorsqu'il est utilisé avec la fonction strptime (), le %p La directive n’affecte le champ horaire de sortie que si %I La directive est utilisée pour analyser l'heure.

Effectivement, changer votre %H à %I le fait fonctionner.

173
Ned Batchelder
format = '%Y-%m-%d %H:%M %p'

Le format utilise %H au lieu de %I. Puisque %H est le format "24 heures", il est probable que le %p information. Cela fonctionne très bien si vous changez le %H à %I.

42
jamessan

Vous avez utilisé %H (Format 24 heures) au lieu de %I _ (Format 12 heures).

19
Tim Pietzcker

Essayez de remplacer% H (heure sur une horloge de 24 heures) par% I (heure sur une horloge de 12 heures)?

14
keithjgrant