如何从字符串中解析日期时间和时间,以及如何在Python中添加这些解析后的日期时间和时间值

时间:2018-11-27 05:30:06

标签: python datetime time timedelta

我正在从字符串中解析日期时间对象, 在这种情况下,我遇到了一个问题,我必须将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

1 个答案:

答案 0 :(得分: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