Parser une date a multiple format
Submitted by PiTiLeZarD on Sat, 12/17/2005 - 14:42
Tagged:
Le but de ce billet est de montrer comment parser une date lorsqu'on est pas sur du format qu'on entre ... Par exemple on parse des dates de mails, mais elle ne sont pas toujours exprimée de la même manière :
- 18 Jun 2005 22:22:22
- Fri, 16 Dec 2005 15:55:53 +0100
- ...
Donc j'ai fait une fonction évolutive en ce sens et qui me permet d'obtenir un objet datetime assez pratique pour la manipulation de date (et de time ;))
def parseDate(dDate): #removing timezone c = dDate[-5:-4] if (c == '+') or (c == '-'): dDate = dDate[:-6] #trying multiple date formats theDate = None formats = ["%d %b %Y %H:%M:%S","%a, %d %b %Y %H:%M:%S"] for format in formats: try: theDate = time.strptime(dDate,format) except ValueError: continue #if no date format found, assuming mail is from now if theDate is None: log('parsing date','date '+dDate+' is not parsed') return datetime.now() #return the datetime object return datetime.fromtimestamp(time.mktime(theDate))
Voila du coup si ça log une mauvaise date, ça crache pas le programme, qui tournera avec une date erronnée, et je pourrai aisément la rajouter !!!
En ce qui concerne les %, pour les format de dates rendez vous ici
