在datetime.datetime中转换datetime.time

2024-04-29 07:09:53 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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对象,原点是datetime.datetime对象)

有什么建议吗


Tags: 对象datetimedatereturntimedef错误差异
2条回答

两个不同的datetime相减已经返回一个增量timedelta

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

要将time转换为datetimethis可能有帮助,或者您可以手动调整字段

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)

输出

t : 01:02:03
d : 2013-02-21
dt: 2013-02-21 01:02:03
  1. 当您可以从标准库中获取所需内容时,切勿自行执行计算。两个datetime.datetime对象之间的差异为datetime.timedelta提供了一个类属性seconds,您可以从函数返回该属性
  2. 您可以使用^{}组合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))

输出:

33213

相关问题 更多 >