2017-05-09 1 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. float 필드에 문자열 값을 어떻게 할당 할 수 있습니까?Odoo - 변환 문자열은 파이썬에서

+0

07:00을 float로 변환해야합니까? – mohammad

+0

"인쇄 시간"은 07:00을 인쇄합니다. 그러나 type (time)은 문자열입니다. 나는 그것을 타입이 float 인 필드에 할당하려고합니다. – Aiswarya

+0

07:00는 float에 할당 할 수 없습니다. 수레는 "int.int"형식입니다 – mohammad

답변

1

사인을 사용하여 시간과 분을 구분하면 float로 변환 할 수 없습니다.

콜론을 점 strftime("%H.%M")으로 대체하면 이제 작동합니다. 당신이 시간과 분은 .. datetime.hour 및 datetime.minute를 사용하려면

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

오! Thnku :) 그건 내가 한 바보 같은 실수 였어! – Aiswarya

+0

건배, ans가 도움이 될 경우 투표하십시오. :) –

+0

나는 투표를하기에 충분한 명성을 얻지 못했다. – Aiswarya

0

시간 변수는 을 문자열이있을 것이다. shift_change_ob.shift_date가 datetime 객체라고 가정합니다. 이 객체 자체로부터 값을 얻을 수 있습니다.

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

고마워! :) Didnt는 ** 10/6 ** 요인에 대해 알고 있습니다. – Aiswarya