Ich möchte einen String wie diesen "29-Apr-2013-15:59:02"
In etwas brauchbareres konvertieren.
Die Bindestriche können leicht durch Leerzeichen oder andere Zeichen ersetzt werden. Dieses Format wäre ideal: "YYYYMMDD HH:mm:ss (20130429 15:59:02)"
.
Bearbeiten:
Entschuldigung, ich habe die Antwort nicht speziell in einem anderen Beitrag gesehen. Aber auch hier bin ich unwissend, also hätte ich mir die Lösung anschauen können und wusste es nicht. Ich habe das funktioniert, aber ich würde es nicht als "hübsch" betrachten.
#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
Irgendwelche Gedanken zur Verbesserung?
Verwenden Sie datetime.strptime () , um die inDate
-Zeichenfolge in ein Date-Objekt zu parsen, verwenden Sie datetime.strftime () , um das Format in einem beliebigen Format auszugeben:
>>> 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)'
Haben Sie Dateutil untersucht?
http://labix.org/python-dateutil
Ich habe eine ähnliche Frage wie Ihre gefunden: Wie kann ich eine ISO 8601-Datetime-Zeichenfolge in ein Python-Datetime-Objekt übersetzen?
Sie möchten in datetime
schauen, insbesondere strptime
.