在Python语言中更改日期时间格式

时间:2017-01-23 05:16:11

标签: python date datetime

我正在通过Gmail API解析电子邮件,并且具有以下日期格式:

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

我想将其转换为用于MySQL存储的ISO 2017-01-21(yyyy-mm-dd)格式。我无法通过strftime()/ strptime()来做这件事而且我错过了什么。有人可以帮忙吗?

TIA

4 个答案:

答案 0 :(得分:1)

dateutil中的isoformat()。

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日

答案 1 :(得分: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)))

答案 2 :(得分: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

答案 3 :(得分:0)

您甚至可以使用简单的拆分和字典手动完成。这样,您就可以更好地控制格式化。

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

保持简单。