簡體   English   中英

類型錯誤:嘗試將字典中的日期時間對象轉換為字符串時需要整數(獲取類型 datetime.datetime)

[英]TypeError: an integer is required (got type datetime.datetime) when trying to convert a datetime object within a dictionary to a string

所以我在 Python 3.7.4 中使用用戶輸入的日期,這些日期由另一個程序以字典格式存儲在變量中。 這些可能是最近的任何日期。 例如,2019 年 11 月 6 日是這樣的:

{'Select start date': datetime.datetime(2019, 11, 6, 0, 0)}

我不關心項目標簽,但我想將這個字典日期轉換為 06 Nov 2019 的格式(我知道是strftime('%d %b %Y') )但我不確定如何讓它明白上面是一個日期時間對象,並在它實際上是一個字典對象時對其進行轉換,並且不會拋出錯誤。

我在這里閱讀了很多關於此的內容,但這里幾乎所有問題都只關注今天的日期(因此使用了datetime.datetime.now() )或特定日期,而不是用戶輸入的可能會有所不同的日期,住在字典里。 我已經看過很多這樣的東西:

import datetime
d = datetime.datetime(2019, 11, 06, 0, 0, 0, 000000)
d.strftime("%a %b %d %Y %H:%M:%S %z")

...但它似乎並不完全適用於這種情況。 由於字典格式的原因, strftimestrptime之類的命令似乎不起作用,而且我不能使用像上面這樣的靜態示例,因為我想要轉換的實際日期並不總是相同的。 我怎樣才能在不使用字符串操作瘋狂地走很長一段路的情況下完成這項工作? 我覺得我缺少一個非常簡單的解決方案。

代碼示例(不起作用):

import datetime

dic = {'Select start date': datetime.datetime(2019, 11, 7, 0, 0)}

for key, value in dic.items():
     d = datetime.datetime(value)
     d.strftime("%d %b %Y")   

產生錯誤:

TypeError: an integer is required (got type datetime.datetime)

我現在明白發生了什么。 d = datetime.datetime(value)行是問題所在,您將 datetime 對象傳遞給datetime.datetime()方法,這就是您獲得 valueError 的原因。 這是不必要的,因為您已經從字典中獲取了一個 datetime 對象,因此沒有理由構建一個新對象。 這是固定代碼:

import datetime

dic = {'Select start date': datetime.datetime(2019, 11, 7, 0, 0)}

for key, datetime_obj in dic.items():
     datetime_str = datetime_obj.strftime("%d %b %Y")
     print(datetime_str)

調試它的一種簡單方法是使用type() 例如:

for key, value in dic.items():
    print(type(value))

會給你<class datetime.datetime > 查看 datetime.datetime() 的文檔會告訴您此方法只接受整數。

從字典中獲取價值並對其進行操作,如下所示,

dic = {'Select start date': datetime.datetime(2019, 11, 6, 0, 0)}

for v in dic.values():
     d = datetime.datetime(v)
     d.strftime("%a %b %d %Y %H:%M:%S %z")

另一種方法是

for key, value in dic.items():
     d = datetime.datetime(value)
     d.strftime("%a %b %d %Y %H:%M:%S %z")

此鏈接中了解有關python中字典的更多信息

暫無
暫無

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

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