2017-05-09 5 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) 

Typ (Zeit) ist String während Typ (self.orginal_shift_time) ist Schwimmer. So bekomme ich ValueError: ungültiges Literal für float(): 07:00. Wie kann ich dem Float-Feld einen String-Wert zuweisen?Odoo - Konvertieren Zeichenfolge in Python zu schweben

+0

07:00 sollte in was float umgewandelt werden? – mohammad

+0

"Druckzeit" druckt 07:00. Aber Typ (Zeit) ist String. Ich möchte es einem Feld zuweisen, dessen Typ Float ist. – Aiswarya

+0

07:00 kann nicht zugewiesen werden. Floats sind von der Form "int.int" – mohammad

Antwort

1

Sinus Sie verwendet Doppelpunkt strftime("%H:%M") zu trennen Stunden und Minuten, es ist nicht möglich, in Float zu konvertieren.

So ersetzen Doppelpunkt mit Punkt strftime("%H.%M"), jetzt wird es funktionieren.

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

oh! Thnku :) Das war ein dummer Fehler, den ich gemacht habe! – Aiswarya

+0

Prost, bitte stimme ab, wenn dir das ans hilft. :) –

+0

Ich habe nicht genug Reputation zu wählen :) – Aiswarya

0

Die Zeitvariable wird Zeichenfolge haben, Wenn Sie Stunde und Minute wollen .. datetime.hour und datetime.minute verwenden. Ich nehme an, shift_change_ob.shift_date ist ein Datetime-Objekt. Sie können den Wert von diesem Objekt selbst erhalten.

shift_change_ob.shift_date.hour 
shift_change_ob.shift_date.minute 

sollte geben was Sie wollen.

Wenn Sie den Wert als eine einzelne Variable vom Typ float speichern müssen können Sie,

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 ist der Faktor Minuten in Dezimalzahl zu konvertieren.

+0

Danke! :) Ich kannte den ** 10/6 ** Faktor nicht – Aiswarya

Verwandte Themen