在 Python 中将各种人类可读的时间格式解析为时间对象(datetime.time)?



我有一个可能是时间对象的字符串列表。注意:不是日期时间对象或时间戳对象。这些时间没有提及纪元或日期。例如:

time_strings = ['6:00PM', '7:00pm', '8:00am', '17:00:00', '4PM']

是否有一个好的解析实用程序可以将这些对象转换为 datetime.time 对象,而不是 datetime.datetime 对象(默认情况下输入当前日期(?

标准的'datetime.datetime.strptime((既要求时间是已知的格式,又产生一个datetime.datetime.object,例如:

from datetime import datetime
datetime.strptime('6:00', '%H:%M')

产量: 日期时间.日期时间(1900, 1, 1, 6, 0(

我尝试了以下方法:

from dateutil.parser import parse
parse(time_strings[0])

产量: 日期时间.日期时间(2017, 8, 24, 18, 0(

import pandas as pd
pd.to_datetime(time_strings[0])

收益:时间戳('2017-08-24 18:00:00'(

from pytimeparse import parse as tparse
tparse(time_strings[0])

失败(返回空值(

import parsedatetime
cal = parsedatetime.Calendar()
cal.parse(time_strings[0])

收益率:(time.struct_time(tm_year=2017, tm_mon=8, tm_mday=24, tm_hour=18, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=236, tm_isdst=1(, 2(

就我而言,如果数据中没有,则无法推断日期至关重要。

有没有更好的python实用程序(python 3(可以将各种人类可读的时间表达式转换为datetime.time对象?

我找到的最佳解决方案来自熊猫核心库:

from pandas.core.tools.datetimes import to_time
to_time(time_strings[0])

产量: 日期时间.时间(18, 0(

这是所需的输出。但是,它不识别时间格式,例如(下午 4 点、凌晨 3 点等(。欢迎更好的解决方案。

最新更新