繁体   English   中英

在 datetime.datetime 中转换 datetime.time

[英]Convert datetime.time in datetime.datetime

我想计算两个日期之间的秒数差异。

def delta_seconds(datetime, origin):
   td = datetime - origin  # datetime - date
   return float((td.microseconds + (td.seconds + td.days * 24 * 3600) * 10 ** 6)) / 10 ** 6

我无法计算差异,它向我显示了这个错误:

TypeError: unsupported operand type(s) for -: 'datetime.time' and 'datetime.datetime

所以,我想将 datetime.time 转换为 datetime.datetime。

(datetime 是 datetime.time obj,origin 是 datetime.datetime obj)

有什么建议吗?

两个不同datetime时间的减法已经返回一个增量。 时间增量

参数origindatetime时间必须是datetime时间 object。 要么将两个参数设为datetime时间 object,要么将日期时间的datetime.time设为当前日期时间object。

要将您的time转换为datetime可能会有所帮助,或者您可以手动调整字段。

import datetime

t = datetime.time(1, 2, 3)
print('t :', t)

d = datetime.date.today()
print('d :', d)

dt = datetime.datetime.combine(d, t)
print('dt:', dt)

output

t : 01:02:03
d : 2013-02-21
dt: 2013-02-21 01:02:03
  1. 当您可以从标准库中获得所需的东西时,永远不要自己执行计算。 两个datetime.datetime对象之间的差异为您提供了datetime.timedelta ,它已经具有 class 属性,您可以从 function 返回seconds
  2. 您可以使用datetime.combine来组合datetime.datedatetime.time

演示:

from datetime import datetime, date, time


def delta_seconds(end, origin):
    return (end - origin).seconds


# Test
date = date(2021, 5, 3)
time = time(10, 20, 30)
origin = datetime.combine(date, time)
end = datetime.now()
print(delta_seconds(end, origin))

Output:

33213

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM