Python隐式将字符串转换为日期时间对象
我知道有很多类似的问题,也知道 strptime
和 strftime
这两个函数。
不过我想问的问题有点不同。
在 Python 中,最简单的方法是什么,可以把字符串自动转换成日期或日期时间对象?
或者说,能不能有一个函数,既可以接受表示日期的字符串,也可以接受日期对象。
就像 SQL 中的 date_object = 'string_of_date'
一样。
我猜可能会有类似的方式
cast_date=lambda x:x if type(x)=='datetime' else strptime(x,'%%%')#dosen't really work
cast_date=lambda x:strptime(str(x),'%%%') #edit
但我更希望能用一些原生的方式,如果有的话。
谢谢!
2 个回答
0
在Python中,没有直接的日期时间转换功能。你写的那个小助手函数看起来是个不错的方法。建议你使用 isinstance 来检查类型,而不是直接检查具体的类型,这样可以兼容日期时间的子类。
4
你可以看看这个叫做 dateutil 的模块。它有一个很棒的日期时间解析器。
>>> from dateutil.parser import parse
>>> print parse("1:00PM")
2011-12-11 13:00:00
>>> print parse("1/1/2008")
2008-01-01 00:00:00
>>> print type(parse("1/1/2008"))
<type 'datetime.datetime'>
把这个和下面这样的类型检查结合起来:
my_datetime = parse(item) if isinstance(item, str) or isinstance(item, unicode) else item