簡體   English   中英

Python錯誤:TypeError:預期的字符串或緩沖區

[英]Python error: TypeError: expected string or buffer

我需要您的代碼幫助。 我已經從time.struct_time轉換為datetime對象。 現在,在添加到第二天的日期之后,我想將其轉換回time.struct_time對象。

當我嘗試這個:

half_hour_date = '23/02/2018 23:00PM'
epg_time_1 = time.strptime(half_hour_date, '%d/%m/%Y %I:%M%p')

#convert from time_struct_time object to datetime
date_format = datetime.datetime.fromtimestamp(time.mktime(epg_time_1))
half_hour = date_format + datetime.timedelta(days = self.program_day)

#convert from datetime to time_struct_time object
epg_time_1 = time.strptime(half_hour, '%d/%m/%Y %I:%M%p')

它給我一個錯誤: TypeError:預期的字符串或緩沖區

錯誤在此行上跳躍:

epg_time_1 = time.strptime(half_hour, '%d/%m/%Y %I:%M%p')

這是half_hour的日期時間對象:

2018-02-23 23:00:00

這是我要實現的目標:

time.struct_time(tm_year=2018, tm_mon=2, tm_mday=23, tm_hour=23, tm_min=00, tm_sec=0, tm_wday=3, tm_yday=53, tm_isdst=-1)

能否請您幫我糾正錯誤,以便將其轉換為time.struct_time對象?

>>> import datetime
... import time
... 
... fmt = '%d/%m/%Y %H:%M%p'
... 
... half_hour_date = '23/02/2018 23:00PM'
... 
... date_format = datetime.datetime.strptime(half_hour_date, fmt)
... half_hour = date_format + datetime.timedelta(days=2)  # self.program_day)
... 
... # convert from datetime to time_struct_time object
... epg_time_1 = time.struct_time(half_hour.timetuple())
>>> epg_time_1
time.struct_time(tm_year=2018, tm_mon=2, tm_mday=25, tm_hour=23, tm_min=0, tm_sec=0, tm_wday=6, tm_yday=56, tm_isdst=-1)

沒有23:00 PM。 將其更改為11:00 PM。

[更新]

如您所述,錯誤是從第二行出來的。 當我使用Python 3.6運行前兩行時,結果是

ValueError:時間數據'23 / 02/2018 23:00 PM'與格式'%d /%m /%Y%I:%M%p'不匹配

這意味着“ 23:00 PM”存在問題,因此我建議將其更改為“ 11:00 PM”。 或者,您可以使用“%H”代替“%I”(如Patrick Haugh在評論中建議的那樣)。

PS:由於移動設備,我無法給出完整答案。 抱歉

暫無
暫無

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

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