简体   繁体   English

在 datetime.datetime 中转换 datetime.time

[英]Convert datetime.time in datetime.datetime

i want to calculate difference in seconds, between two dates.我想计算两个日期之间的秒数差异。

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

I can't compute the difference and it shows me this error:我无法计算差异,它向我显示了这个错误:

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

So, i want to convert datetime.time into datetime.datetime.所以,我想将 datetime.time 转换为 datetime.datetime。

(datetime is a datetime.time obj and origin is a datetime.datetime obj) (datetime 是 datetime.time obj,origin 是 datetime.datetime obj)

Any suggestion?有什么建议吗?

The subtraction of two different datetime already returns a delta.两个不同datetime时间的减法已经返回一个增量。 timedelta 时间增量

The params origin and datetime have to be a datetime object.参数origindatetime时间必须是datetime时间 object。 Either make both params to a datetime object or the object that is datetime.time to an current date time` object.要么将两个参数设为datetime时间 object,要么将日期时间的datetime.time设为当前日期时间object。

For converting your time to datetime , this may help or you adjust the fields manually.要将您的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 output

t : 01:02:03
d : 2013-02-21
dt: 2013-02-21 01:02:03
  1. Never perform calculations yourself when you can get the desired things from the standard library.当您可以从标准库中获得所需的东西时,永远不要自己执行计算。 The difference between two datetime.datetime objects gives you datetime.timedelta which already has a class attribute, seconds which you can return from your function.两个datetime.datetime对象之间的差异为您提供了datetime.timedelta ,它已经具有 class 属性,您可以从 function 返回seconds
  2. You can use datetime.combine to combine datetime.date and datetime.time .您可以使用datetime.combine来组合datetime.datedatetime.time

Demo:演示:

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: Output:

33213

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

相关问题 Pandas - 将 int 转换为 datetime.time 和 datetime.datetime - Pandas - convert int to datetime.time and datetime.datetime 类型错误:无法将 datetime.datetime 与 datetime.time 进行比较 - TypeError: can't compare datetime.datetime to datetime.time 使减法成为可能:“ datetime.time”和“ datetime.datetime” - Making the subtraction posssible: 'datetime.time' and 'datetime.datetime' 将datetime.datetime与datetime.time相结合 - TypeError:需要一个整数 - combining datetime.datetime with datetime.time - TypeError: an integer is required SQLAlchemy 过滤器将 datetime.time 转换为 datetime.datetime - SQLAlchemy filter converting datetime.time to datetime.datetime 元组中的 datetime.time 显示 datetime.datetime 而不是值 - datetime.time in a tuple shows datetime.datetime instead value 熊猫:修复datetime.time和datetime.datetime混合 - Pandas: Fixing datetime.time and datetime.datetime mix 在“ datetime.time”和“ datetime.datetime”的实例之间不支持“>” - '>' not supported between instances of 'datetime.time' and 'datetime.datetime' 在“ datetime.datetime”和“ datetime.time”的实例之间不支持“> =” - '>=' not supported between instances of 'datetime.datetime' and 'datetime.time' 如何将 datetime.time() 对象转换为 datetime.datetime 对象 pandas - how to convert a datetime.time() object to datetime.datetime object pandas
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM