Python隐式将字符串转换为日期时间对象

1 投票
2 回答
1259 浏览
提问于 2025-04-17 08:09

我知道有很多类似的问题,也知道 strptimestrftime 这两个函数。

不过我想问的问题有点不同。

在 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

撰写回答