web-dev-qa-db-fra.com

Format de la chaîne temporelle en Python 3.3

J'essaie d'obtenir l'heure locale actuelle sous forme de chaîne au format: année-mois-jour heure: minutes: secondes. Que j'utiliserai pour la journalisation. En lisant la documentation, je peux le faire en:

import time
'{0:%Y-%m-%d %H:%M:%S}'.format(time.localtime())

Cependant, je reçois l'erreur:

 Traceback (dernier appel le plus récent): 
 Fichier "", ligne 1, dans 
 ValueError: spécificateur de format non valide 

Qu'est-ce que je fais mal? Y a-t-il une meilleure façon?

17
markmnl

time.localtime Retour time.struct_time qui ne prend pas en charge le formatage de type strftime.

Passer datetime.datetime objet prenant en charge le formatage strftime. (Voir datetime.datetime.__format__ )

>>> import datetime
>>> '{0:%Y-%m-%d %H:%M:%S}'.format(datetime.datetime.now())
'2014-02-07 11:52:21'
33
falsetru

Vous pouvez également utiliser time.strftime :

time.strftime('{%Y-%m-%d %H:%M:%S}')
14
sashkello

Et pour les versions plus récentes de Python (3.6+, https://www.python.org/dev/peps/pep-0498/ uniquement pour être complet), vous peut utiliser le formatage de chaîne plus récent, à savoir.

import datetime

today = datetime.date.today()

f'{today:%Y-%m-%d}'
> '2018-11-01'
9
seaders