2017-01-23 2 views
0

Я разборе электронной почты через API Gmail и получили следующий формат даты:Изменение формата даты и времени в Python Язык

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

Я хочу, чтобы преобразовать его в ISO 2017-01-21 (гггг-мм-дд) формат для хранения данных MySQL , Я не могу сделать это через strftime()/strptime() и что-то не хватает. Кто-то может помочь?

ТИА

ответ

1

isoformat() в 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()) 

Выход:

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

+0

Спасибо ... но мне нужна только дата ... не время – chhibbz

+1

печать (date.date()). Это дает вам только дату – MSD

+0

Да! ... это то, что я хочу. Спасибо @saranya – chhibbz

0

Вы можете сделать это с strptime():

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

Что дает вам:

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")) 

Выход: 2017-01-21

+0

Спасибо. Но это вызывает следующую ошибку: 'ValueError: данные времени 'Sat, 21 Jan 2017 05:08:04 -0800' не соответствует формату '% a% d% b% Y% X -% f'' – chhibbz

+1

@chhibbz извините !!. Отредактированная запятая отсутствует – SmartManoj

+0

Спасибо .. Сейчас работает – chhibbz

0

Вы даже можете сделать это вручную, используя простой раскол и dictionary.That путь, вы будете иметь больше контроля над форматированием.

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() 

Храните его простым.

Смежные вопросы