Python 在datetime.datetime中转换datetime.time

Python 在datetime.datetime中转换datetime.time,python,datetime,time,Python,Datetime,Time,我想计算两个日期之间的秒差 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

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

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对象)


有什么建议吗?

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

参数
origin
datetime
必须是
datetime
对象。将两个参数都设置为
datetime
对象,或将
datetime.time
对象设置为当前datetime`对象

要将
时间
转换为
日期时间
,可能会有帮助,或者您可以手动调整字段

导入日期时间
t=datetime.time(1,2,3)
打印('t:',t)
d=datetime.date.today()
打印('d:',d)
dt=datetime.datetime.combine(d,t)
打印('dt:',dt)
输出
t:01:02:03
d:2013-02-21
dt:2013-02-21 01:02:03

两个不同的
日期时间的相减已经返回一个增量

参数
origin
datetime
必须是
datetime
对象。将两个参数都设置为
datetime
对象,或将
datetime.time
对象设置为当前datetime`对象

要将
时间
转换为
日期时间
,可能会有帮助,或者您可以手动调整字段

导入日期时间
t=datetime.time(1,2,3)
打印('t:',t)
d=datetime.date.today()
打印('d:',d)
dt=datetime.datetime.combine(d,t)
打印('dt:',dt)
输出
t:01:02:03
d:2013-02-21
dt:2013-02-21 01:02:03
  • 当您可以从标准库中获取所需内容时,切勿自行执行计算。两个
    datetime.datetime
    对象之间的差异为您提供了
    datetime.timedelta
    ,它已经有一个class属性,
    seconds
    ,您可以从函数返回该属性
  • 您可以使用组合
    datetime.date
    datetime.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
    
    输出:

    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
    
  • 当您可以从标准库中获取所需内容时,切勿自行执行计算。两个
    datetime.datetime
    对象之间的差异为您提供了
    datetime.timedelta
    ,它已经有一个class属性,
    seconds
    ,您可以从函数返回该属性
  • 您可以使用组合
    datetime.date
    datetime.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
    
    输出:

    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
    

    您的问题是“日期之间的差异”,但您使用的是datetime.time?你能给出一个具体的例子吗?我从一个nmea句子(object\u nmea.timestamp)中检索到一个时间戳。此时间戳是datetime.time对象。然后我从一个nmea句子(object\u nmea.date)中检索日期,它是一个datetime.date对象。我把它转换成datetime.datetime。现在,theese,我想计算秒数的差异,为了得到正确的结果,你们有一个日期和时间,你们把它组合成一个datetime对象?你想知道那个日期(给定某个时间)过去了多少秒吗?是的,我有两个日期,我想知道datetime(datetime.time)和origin(datetime.datetime)过去了多少秒。但我不能这样做,因为它们的类型不同。通过将日期对象与时间零点相结合,可以很容易地从日期对象中获取日期时间对象;像
    datetime\u obj=datetime.datetime.combine(date\u obj,datetime.time(0))
    你的问题是“日期之间的差异”,但你用的是datetime.time?你能给出一个具体的例子吗?我从一个nmea句子(object\u nmea.timestamp)中检索到一个时间戳。此时间戳是datetime.time对象。然后我从一个nmea句子(object\u nmea.date)中检索日期,它是一个datetime.date对象。我把它转换成datetime.datetime。现在,theese,我想计算秒数的差异,为了得到正确的结果,你们有一个日期和时间,你们把它组合成一个datetime对象?你想知道那个日期(给定某个时间)过去了多少秒吗?是的,我有两个日期,我想知道datetime(datetime.time)和origin(datetime.datetime)过去了多少秒。但我不能这样做,因为它们的类型不同。通过将日期对象与时间零点相结合,可以很容易地从日期对象中获取日期时间对象;比如
    datetime\u obj=datetime.datetime.combine(date\u obj,datetime.time(0))
    Ah ok,这样我可以用“result.seconds”替换秒内转换(返回浮点(…)。明天我会修复它。谢谢!啊ok,这样我可以用“result.seconds”替换秒内转换(返回浮点(…)。明天我会修复它。谢谢!