我有一些字符串以
等格式来找我 29-Jul-2014
或03-Aug-2015
将此转换为datetime.date
对象的最简单方法是什么?
我只能考虑制作像d = {'Jul': 7, 'Aug': 8, ...}
这样的词典然后再做
dt = datetime.date(year, d[month], day)
还有其他更简单的方法可以避免创建这个词典吗?
由于
答案 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()方法