web-dev-qa-db-fra.com

Conversion d'une chaîne en une chaîne date-heure formatée à l'aide de Python

J'essaie de convertir une chaîne "20091229050936" en "05:09 29 décembre 2009 (UTC)"

>>>import time
>>>s = time.strptime("20091229050936", "%Y%m%d%H%M%S")
>>>print s.strftime('%H:%M %d %B %Y (UTC)')

donne AttributeError: 'time.struct_time' object has no attribute 'strftime'

Clairement, j'ai fait une erreur: le temps est faux, c'est un objet datetime! Il a une date et une composante horaire!

>>>import datetime
>>>s = datetime.strptime("20091229050936", "%Y%m%d%H%M%S")

donne AttributeError: 'module' object has no attribute 'strptime'

Comment suis-je censé convertir une chaîne en une chaîne de date formatée?

22
Josh

time.strptime Renvoie un time_struct; time.strftime Accepte un time_struct Comme paramètre facultatif:

>>>s = time.strptime(page.editTime(), "%Y%m%d%H%M%S")
>>>print time.strftime('%H:%M %d %B %Y (UTC)', s)

donne 05:09 29 December 2009 (UTC)

11
Josh

Pour les objets datetime, strptime est un méthode statique de la classe datetime, pas une fonction libre dans le module datetime:

>>> import datetime
>>> s = datetime.datetime.strptime("20091229050936", "%Y%m%d%H%M%S")
>>> print s.strftime('%H:%M %d %B %Y (UTC)')
05:09 29 December 2009 (UTC)
41
sth

Pour moi, c'est le meilleur et ça marche aussi sur Google App Engine

Exemple montrant UTC-4

import datetime   
UTC_OFFSET = 4
local_datetime = datetime.datetime.now()
print (local_datetime - datetime.timedelta(hours=UTC_OFFSET)).strftime("%Y-%m-%d %H:%M:%S")
1
coto

Vous pouvez utiliser easy_date pour le rendre facile:

import date_converter
my_datetime = date_converter.string_to_string("20091229050936", "%Y%m%d%H%M%S", "%H:%M %d %B %Y (UTC)")
1
Raphael Amoedo
from datetime import datetime
s = datetime.strptime("20091229050936", "%Y%m%d%H%M%S")
print("{:%H:%M %d %B %Y (UTC)}".format(s))
1
Autodidact