Odoo - 将字符串转换为 python 中的浮点数

Odoo - Convert string to float in python

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

type(time) 是 string 而 type(self.orginal_shift_time) 是 float。所以我得到 ValueError:float() 的无效文字:07:00。如何将字符串值分配给浮点字段?

您使用冒号 strftime("%H:%M") 分隔小时和分钟的迹象,无法转换为浮点数。

所以用点 strftime("%H.%M") 替换冒号,现在它可以工作了。

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

时间变量会有字符串, 如果你想要小时和分钟.. 使用 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 是将分钟转换为小数的系数。