2017-01-23 210 views
0

我通過Gmail API解析電子郵件,並得到了以下日期格式:更改日期時間格式

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

我想把它轉換成ISO 2017-01-21(YYYY-MM-DD)格式的MySQL存儲。我無法通過strftime()/ strptime()來做到這一點,我錯過了一些東西。有人可以幫忙嗎?

TIA

回答

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年1月21日

+0

謝謝...但我只需要日期...不是時間 – chhibbz

+1

print(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年1月21日

+0

謝謝。但它是拋出以下錯誤: 'ValueError:time data'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() 

保持簡單。