Python: 如何在不知道格式的情况下将字符串转换为日期时间?

Python: How can I convert string to datetime without knowing the format?

我有一个以字符串形式出现并代表时间的字段。有时是 12 小时,有时是 24 小时。可能的值:

  1. 8:26
  2. 08:26am
  3. 13:27

有没有一个函数可以通过智能将它们转换为时间格式?选项 1 没有 am,因为它是 24 小时格式,而选项 2 前面有一个 0,而选项 3 显然是 24 小时格式。 Python/ lib 中是否有一个函数可以:

time = func(str_time)

pandas

中有一个这样的函数
import pandas as pd
d = pd.to_datetime('<date_string>')

超级简答:

from dateutil import parser
parser.parse("8:36pm")
>>>datetime.datetime(2015, 6, 26, 20, 36)
parser.parse("18:36")
>>>datetime.datetime(2015, 6, 26, 18, 36)

Dateutil 应该可用于您的 python 安装;不需要像 pandas

这样大的东西

如果你想从datetime对象中提取时间:

t = parser.parse("18:36").time()

这会给你一个 time 对象(如果这对你有更多帮助的话)。 或者您可以提取单个字段:

dt = parser.parse("18:36")
hours = dt.hour
minute = dt.minute