2017-01-23 2 views
0

ich E-Mails über Google Mail API bin Parsen und haben folgendes Datumsformat bekam:Ändern Datetime-Format in Python Sprache

Sat, 21 Jan 2017 05:08:04 -0800 

Ich möchte es in ISO umwandeln 2017-01-21 (yyyy-mm-dd) Format für MySQL-Speicher . Ich kann es nicht durch strftime()/strptime() tun und verpasse etwas. Kann mir bitte jemand helfen?

TIA

Antwort

1

isoformat() in der dateutil.

import dateutil.parser as parser 
text = 'Sat, 21 Jan 2017 05:08:04 -0800' 
date = (parser.parse(text)) 
print(date.isoformat()) 
print (date.date()) 

Ausgang:

2017-01-21T05: 08: 04-08: 00
2017-01-21

+0

Danke ... aber ich brauche nur das Datum ... nicht die Zeit – chhibbz

+1

print (date.date()). Dies gibt dir nur das Datum – MSD

+0

Ja! ... das ist was ich will. Danke @saranya – chhibbz

0

Sie können es mit strptime():

import datetime 
datetime.datetime.strptime('Sat, 21 Jan 2017 05:08:04 -0800', '%a, %d %b %Y %H:%M:%S %z') 

Das gibt Ihnen:

datetime.datetime(2017, 1, 21, 5, 8, 4, tzinfo=datetime.timezone(datetime.timedelta(-1, 57600))) 
0
from datetime import datetime 
s="Sat, 21 Jan 2017 05:08:04 -0800" 
d=(datetime.strptime(s,"%a, %d %b %Y %X -%f")) 
print(datetime.strftime(d,"%Y-%m-%d")) 

Ausgabe: 2017-01-21

+0

Danke. Aber es wirft den folgenden Fehler auf: 'ValueError: Zeitdaten 'Sat, 21. Januar 2017 05:08:04 -0800' stimmt nicht überein '% a% d% b% Y% X -% f'' – chhibbz

+1

@chhibbz Entschuldigung !!. Editiert Komma fehlt – SmartManoj

+0

Danke .. Es funktioniert jetzt – chhibbz

0

Sie können es auch tun manuell einfach Split und dictionary.That Weise verwenden, werden Sie mehr Kontrolle über die Formatierung haben.

def dateconvertor(date): 
    date = date.split(' ') 
    month = {'Jan': 1, 'Feb': 2, 'Mar': 3} 
    print str(date[1]) + '-' + str(month[date[2]]) + '-' + str(date[3]) 

def main(): 
    dt = "Sat, 21 Jan 2017 05:08:04 -0800" 
    dateconvertor(dt) 

if __name__ == '__main__': 
    main() 

Halten Sie es einfach.