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 是将分钟转换为小数的系数。
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 是将分钟转换为小数的系数。