将字符串格式的日期转换为datetime.date

时间:2014-07-10 12:06:41

标签: python

我有一些字符串以

等格式来找我

29-Jul-201403-Aug-2015

将此转换为datetime.date对象的最简单方法是什么?

我只能考虑制作像d = {'Jul': 7, 'Aug': 8, ...}这样的词典然后再做

dt = datetime.date(year, d[month], day)

还有其他更简单的方法可以避免创建这个词典吗?

由于

2 个答案:

答案 0 :(得分:3)

使用datetime.datetime.strptime将字符串转换为datetime.datetime对象。

>>> datetime.datetime.strptime('29-Jul-2014', '%d-%b-%Y')
datetime.datetime(2014, 7, 29, 0, 0)

然后,使用datetime.datetime.date方法将其转换为datetime.date对象:

>>> datetime.datetime.strptime('29-Jul-2014', '%d-%b-%Y').date()
datetime.date(2014, 7, 29)

答案 1 :(得分:0)

简单的方法是使用dateutil.parse模块,它可以解析常见的日期格式,即使你不知道它当前使用的是什么
例如:

>>> import dateutil.parser
>>> 
>>> utc_time     = '2014-07-29T00:00:00'
>>> verbose_time = '29-Jul-2014'
>>> some_locale  = '29/7/14'
>>> dateutil.parser.parse(utc_time)
datetime.datetime(2014, 7, 29, 0, 0)
>>> dateutil.parser.parse(verbose_time)
datetime.datetime(2014, 7, 29, 0, 0)
>>> dateutil.parser.parse(some_locale)
datetime.datetime(2014, 7, 29, 0, 0)

一旦有了datetime对象,你就应该调用datetime.date()方法