簡體   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