2013-04-16 5 views
2

J'ai quelques données d'horodatage d'une base de données et j'ai besoin de le convertir en Python datetime (format tuple). Comment puis je faire ça?Conversion de temps Python

Par exemple, je dois convertir 16/04/2013 16: 31: 35,649 + 05: 30 Format-datetime (2013, 4, 16, 16, 31, 35). J'essaye de faire la nouvelle partie d'inscription du projet, Django, et chaque fois que l'utilisateur soumet les données et les registres, il reçoit un email de vérification mais chaque fois que l'utilisateur clique sur le lien de vérification, il produit l'erreur suivante :

can't compare offset-naive and offset-aware datetimes

+0

Comment le sélectionnez-vous dans la base de données? Il semble que vous essayez de convertir un horodatage en un datetime ... Quel SGBDR utilisez-vous? – Ben

+0

'" 2013-04-16 16: 31: 35.649 + 05: 30 "' les données sont-elles stockées dans la base de données? Je ne pense pas que stocker le décalage '+5: 30' serait utile, ou simplifier n'importe quoi. –

+0

J'utilise la base de données postgresql .. –

Répondre

3
from dateutil import parser 

dt = parser.parse("2013-04-16 16:31:35.649+05:30") 
# dt == datetime.datetime(2013, 4, 16, 16, 31, 35, 649000, tzinfo=tzoffset(None, 19800)) 

dt.astimezone(pytz.utc).replace(tzinfo=None) 

retours datetime.datetime(2013, 4, 16, 11, 1, 35, 649000) qui est le même instant en UTC et sans tzinfo (offset naïve).

Si vous souhaitez stocker des objets datetime sans tzinfo, stockez-les en UTC.

De grandes parties du monde utilisent l'heure d'été, ce qui rend certaines datetime offset naïves ambiguës. UTC n'a pas ces problèmes.