簡體   English   中英

將datetime.datetime與datetime.time相結合 - TypeError:需要一個整數

[英]combining datetime.datetime with datetime.time - TypeError: an integer is required

我目前正在嘗試迭代SQL請求游標中包含的一些數據,將某些數據的類型更改為“datetime.time”,然后將其與另一個變量組合成一個名為“datetime_db”的新變量。

我有兩個名為“date”和“nextDay”的變量,這些變量之前已在我的代碼中定義過。 前面提到的“datetime.time”將與“date”或“nextDay”組合,具體取決於某些條件。

我的代碼如下:

for (date_db,time_db,price) in cursor:
    time_db = datetime.datetime.strptime(time_db,"%H:%M:%S").time()
    price = float(price)

    if (date_db == date):
        datetime_db = datetime.datetime.combine(datetime.date(date), datetime.time(time_db))

    else:
        datetime_db = datetime.datetime.combine(datetime.date(nextDay), datetime.time(time_db))

這會引發以下錯誤:

File "C:/Users/Stuart/PycharmProjects/untitled/Apache - Copy.py", line 82, in <module>
datetime_db = datetime.datetime.combine(datetime.date(date), datetime.time(time_db))
TypeError: an integer is required

當我為所涉及的3個變量打印出“type()”時,我得到以下內容:

time_db = <type 'datetime.time'> date = <type 'datetime.datetime'> nextDay = <type 'datetime.datetime'>

有什么明顯的原因導致這種情況無效嗎? 我嘗試將“date”和“nextDay”的類型更改為“datetime.date”,但這沒有任何區別。

有人可以建議我如何成功地將這兩個變量結合起來嗎?

您無法通過構造函數將datetime date轉換為datetime

>>> datetime.date(datetime.datetime.now())
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: an integer is required

datetime.time構造函數也是如此; 它不會接受另一個time對象作為參數。

現在,你需要有一個datetime來使用datetime.combine ; time_db已經是類time的實例,但是你的date (這個解釋的不幸名稱)是datetime類型。 那么, date部分date可以用datetime.date方法提取:

>>> dt = datetime.datetime.now()
>>> dt
datetime.datetime(2015, 2, 20, 22, 21, 22, 806109)
>>> dt.date()
datetime.date(2015, 2, 20)

因此你可以這樣做:

datetime.datetime.combine(date.date(), time_db)

combine文件

datetime_db = datetime.datetime.combine(date.date(), time_db.timetz())

這假設datetime_db都是datetime對象,它們看起來是。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM