如何将存储在时间对象中的日期和时间转换为日期时间对象?

时间:2019-07-12 20:51:33

标签: python python-2.7

我正在通过ADODB.Recordset通过COM Dispatch对象使用ODBC,以从Python 2.7中的PostgreSQL表中读取时间戳值。这些字段包含完整的日期和时间值,例如“ 2019-07-03 12:34”。 MyRecordset.Fields(“ time_column”)。Value返回的是时间类型的对象,即使时间对象包含该字段中的所有信息,包括日期。

我需要比较两次。如果时间是日期时间,那将没有问题。我可以将两者相减得到一个timedelta对象。时间类别不支持减法,因为它不支持日期。因此,我需要将时间对象转换为日期时间对象。我在互联网上没有发现任何关于这种特定转化的信息。我以为我可以使用time()方法将时间对象转换为自纪元以来的秒数,但是我无法使用它。我发现的所有示例都适用于系统时间,而不适用于时间对象。

假设StartTime和EndTime是时间对象。

import time
StartTime_since_epoch = StartTime.time()

抛出一个异常,其唯一的消息是“时间”。当我尝试引用不存在的属性或方法时,就会发生这种情况。

我输入了打印语句,以显示对象的类型。结果是:

FirstSegmentEndedTime is an object of type <type 'time'> with value of 07/03/19 12:05:29
FireTime is an object of type <type 'time'> with value of 07/03/19 12:01:29

如何测量它们之间的差异?

1 个答案:

答案 0 :(得分:0)

一种可能的方法是使用struct_time将时间对象转换为gmtime,然后从那里构建日期时间:

import time
import datetime as dt

ti = time.time()

time.sleep(3)

tf = time.time()

ti_ts = time.gmtime(ti)
tf_ts = time.gmtime(tf)

# print(ti_ts) # check your struct_time structure if you need
# a different processing.

dti = dt.datetime(*tuple(ti_ts)[:6])
dtf = dt.datetime(*tuple(tf_ts)[:6])

print(repr(dtf - dti))

输出:

datetime.timedelta(seconds=3)