2017-05-09 48 views
0
time = datetime.strptime(str(shift_change_ob.shift_date) ,"%Y-%m-%d %H:%M:%S").strftime("%H:%M") 
self.orginal_shift_time = float(time) 

類型(時間)爲而類型(self.orginal_shift_time)是浮子。所以我得到ValueError:無效文字float():07:00。我怎樣才能將字符串值分配給浮動字段?Odoo - 將字符串轉換爲漂浮在python

+0

07:00應該轉換爲什麼浮點數? – mohammad

+0

「打印時間」打印07:00。但類型(時間)是字符串。我想將它分配給類型爲float的字段。 – Aiswarya

+0

07:00不可分配給浮動。浮動的形式是「int.int」 – mohammad

回答

1

因爲正在使用冒號strftime("%H:%M")來分隔小時和分鐘,所以無法將其轉換爲浮點數。

所以用點strftime("%H.%M")替換冒號,現在它會起作用。

>>> time = strftime("%H.%M") 
>>> shift_time = float(time) 
>>> shift_time 
10.55 
+0

哦! Thnku :)那是我犯的一個愚蠢的錯誤! – Aiswarya

+0

歡呼聲,如果ans幫助你,請投票。 :) –

+0

我沒有足夠的聲望投票:) – Aiswarya

0

時間變量將有串, 如果你想要小時和分鐘..使用datetime.hour和datetime.minute。 我假設shift_change_ob.shift_date是一個日期時間對象。你可以從這個對象本身獲得值。

shift_change_ob.shift_date.hour 
shift_change_ob.shift_date.minute 

應該給你想要的。

如果您需要將值存儲爲單精度浮點變量就可以了,

time = datetime.strptime(str(shift_change_ob.shift_date) ,"%Y-%m-%d %H:%M:%S").strftime("%H:%M") 
f_time = float(time.split(':')[0] + '.' + str(float(time.strip(':')[1])*(10/6))) 

10/6是分鐘轉換爲十進制的因素。

+0

謝謝! :)不知道** 10/6 **因素 – Aiswarya