web-dev-qa-db-fra.com

Conversion de date heure (AAAA-MM-JJ-HH: MM: SS)

Je veux convertir une chaîne comme celle-ci "29-Apr-2013-15:59:02".__ en quelque chose de plus utilisable.

Les tirets peuvent être facilement remplacés par des espaces ou d’autres caractères. Ce format serait idéal: "YYYYMMDD HH:mm:ss (20130429 15:59:02)".

Modifier:

Désolé, je n'ai pas vu la réponse dans un autre post. Mais encore une fois, je suis ignorant, donc j’aurais pu chercher la solution sans le savoir. J'ai ce travail, mais je ne le considérerais pas "joli".

#29-Apr-2013-15:59:02

import sys, datetime, time

#inDate = sys.argv[1]
inDate = 29-Apr-2013-15:59:02

def getMonth(month):
    monthDict = {'Jan':'01','Feb':'02','Mar':'03','Apr':'04','May':'05','Jun':'06','Jul':'07','Aug':'08','Sep':'09','Oct':'10','Nov':'11','Dec':'12'}
    for k, v in monthDict.iteritems():
        if month == k:
            return v

day = inDate[:2]
#print day
month = inDate[3:6]
#print month
year = inDate[7:11]
#print year
time = inDate[-8:]
#print time

newDate = year+getMonth(month)+day
newDateTime = newDate+" "+time

print newDate
print newDateTime

Des idées pour améliorer?

17
dgj32784

Utilisez datetime.strptime () pour analyser la chaîne inDate dans un objet de date, utilisez datetime.strftime () pour afficher le format de votre choix:

>>> from datetime import datetime
>>> inDate = "29-Apr-2013-15:59:02"
>>> d = datetime.strptime(inDate, "%d-%b-%Y-%H:%M:%S")
>>> d
datetime.datetime(2013, 4, 29, 15, 59, 2)
>>> d.strftime("YYYYMMDD HH:mm:ss (%Y%m%d %H:%M:%S)")
'YYYYMMDD HH:mm:ss (20130429 15:59:02)'
31
Bryan

Avez-vous étudié dateutil?

http://labix.org/python-dateutil

J'ai trouvé une question similaire à la vôtre: Comment traduire une chaîne datetime ISO 8601 en un objet datetime Python?

1
David

Vous voulez examiner datetime , en particulier strptime.

0
Dave