【问题标题】:How to parse datetime and time from strings and how to add these parsed datetime and time values in Python如何从字符串中解析日期时间和时间以及如何在 Python 中添加这些解析的日期时间和时间值
【发布时间】:2018-11-27 05:30:05
【问题描述】:

我正在从字符串中解析日期时间对象, 在这种情况下,我遇到了一个问题,我必须将 datetime 对象与 time 对象一起添加以创建组合时间戳。

我知道有一个 datetime.combine 方法,但不幸的是我无法在这种情况下使用它

例如有两个字符串,一个包含格式化的日期时间,另一个包含格式化的时间,如下所示

dt_str = "2018/11/27 14:12:32"
tm_str = "1:23:45.678" # 1 hour 23 minutes 11 seconds and 750 micro seconds

【问题讨论】:

    标签: python datetime time timedelta


    【解决方案1】:
    dt_str = "2018/11/27 14:12:32"
    tm_str = "1:23:45.678"
    

    首先我们需要从 python 的标准库中导入,即 datetime、time 和 timedelta

    import datetime, time
    from datetime import timedelta
    

    然后我们将 dt_str 解析为日期时间对象,将 tm_str 解析为时间对象

    dt = datetime.datetime.strptime(dt_str, "%Y/%m/%d %H:%M:%S")
    tm = time.strptime(tm_str, "%H:%M:%S.%f")
    

    现在我们将使用 timedelta 类将小时、分钟和秒从时间对象添加到日期时间对象

    timestamp = dt + timedelta(hours=tm.tm_hour) + \
    timedelta(minutes=tm.tm_min) + timedelta(seconds=tm.tm_sec)
    

    结果

    print("dt:", dt)
    print("tm:", tm)
    print("timestamp: ", timestamp)
    

    注意:不能加微秒值,至少我不知道方法。如果有人知道执行上述操作的更好方法,请将您的解决方案放在下面

    dt: 2018-11-27 14:12:32
    tm: time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=1, tm_min=23, tm_sec=45, tm_wday=0, tm_yday=1, tm_isdst=-1)
    timestamp: 2018-11-27 15:36:17
    

    【讨论】:

    • 您仍然可以使用日期算术创建准确的 timedelta 对象。只要 tm_str 符合格式模式(即 from datetime import datetime as dt; dt.strptime(dt_str, "%Y/%m/%d %H:%M:%S") + (dt.strptime(tm_str, "%H:%M:%S.%f") - dt.min.replace(year=1900))。它确实保持微秒:2018-11-27 15:36:17.678000
    猜你喜欢
    • 2011-04-16
    • 2013-08-22
    • 2014-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-11
    相关资源
    最近更新 更多