Python: 如何在不知道格式的情况下将字符串转换为日期时间?
Python: How can I convert string to datetime without knowing the format?
我有一个以字符串形式出现并代表时间的字段。有时是 12 小时,有时是 24 小时。可能的值:
- 8:26
- 08:26am
- 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
我有一个以字符串形式出现并代表时间的字段。有时是 12 小时,有时是 24 小时。可能的值:
- 8:26
- 08:26am
- 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