【问题标题】:Parse various human readable time formats to a time object (datetime.time) in Python?将各种人类可读的时间格式解析为 Python 中的时间对象(datetime.time)?
【发布时间】:2018-02-02 21:35:54
【问题描述】:

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

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')

产量:datetime.datetime(1900, 1, 1, 6, 0)

我尝试了以下方法:

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

产量:datetime.datetime(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 对象?

【问题讨论】:

    标签: python pandas time python-dateutil


    【解决方案1】:

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

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

    产量:datetime.time(18, 0)

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-05
      • 1970-01-01
      • 2010-12-11
      • 2011-07-21
      • 1970-01-01
      • 2012-10-30
      • 1970-01-01
      • 2020-09-10
      相关资源
      最近更新 更多