Existe-t-il un moyen de passer un datetime directement dans ce format?

mydate = datetime.datetime.now()
myxmldate = '<start>%??</start>' % mydate

Ou dois-je passer comme une chaîne? J'ai besoin de passer à un xml une structure datetime.

Merci

0
user1034179 7 nov. 2011 à 21:19

3 réponses

Meilleure réponse

Essayez avec datetime.isoformat ()

mydate = datetime.datetime.now()
myxmldate = '<start>%s</start>' % mydate.isoformat()
2
Cédric Julien 7 nov. 2011 à 17:22

Essayez de lire pour 2.6:

>>> mydate.isoformat()
'2002-03-11'
>>> mydate.strftime("%d/%m/%y")
'11/03/02'
>>> mydate.strftime("%A %d. %B %Y")
'Monday 11. March 2002'

Et pour la version 3 Utilisation d'un type spécifique:

>>> import datetime
>>> d = datetime.datetime(2010, 7, 4, 12, 15, 58)
>>> '{:%Y-%m-%d %H:%M:%S}'.format(d)
'2010-07-04 12:15:58'
1
uralbash 7 nov. 2011 à 17:35

Puisque vous avez XML, il est logique d'utiliser un analyseur XML. Par exemple, avec lxml:

import lxml.etree as ET
import datetime

mydate = datetime.datetime.now()
doc = ET.fromstring('<start>%??</start>')
for start in doc.xpath('//start'):
    start.text = start.text.replace('%??',str(mydate))

print(ET.tostring(doc))

Les rendements

<start>2011-11-07 12:28:58.883274</start>
0
unutbu 7 nov. 2011 à 17:30