2013-07-12 25 views
3

我使用了一個帶有窗口小部件「float_time」的float字段來顯示時間。如何將日期時間轉換爲浮動狀態以在窗口小部件中正確顯示?將日期時間轉換爲浮點型 - OpenERP 7

我解釋一下我的情況,

我有一個場場「起始日期」,這是日期時間,我想,在事件「on_change」我在float類型的另一場已設定的時間價值小部件「float_time」。

'start_date': fields.datetime('Fecha Inicio' , required = True), 
'h_inicio': fields.float('Hora inicio', help="Hora inicio" , required = True), 

鑑於:

<field name="start_date" on_change="onchange_f_inicio(start_date)"/> 
<field name="h_inicio" widget="float_time"/> 

方法on_change

def onchange_f_inicio(self, cr, uid, ids ,fecha_inicio): 
     res = {'value':{}} 
     fecha_ini = datetime.strptime(fecha_inicio, "%Y-%m-%d %H:%M:%S") 

     user = self.pool.get('res.users').browse(cr, uid, uid) 
     tz = pytz.timezone(user.tz) if user.tz else pytz.utc 
     fecha_ini = pytz.utc.localize(fecha_ini).astimezone(tz)  # convert start in user's timezone   

     hora_inicio = "%s.%s" % (str(fecha_ini.hour) , str(fecha_ini.minute))  
     res['value']['h_inicio'] = round(float(hora_inicio),1) 

    return res 

只的運作方式是將日期「開始日期」轉換成字符串,然後轉換成浮子是方法on_change返回的值。

這種形式並不認爲這是最好的,如果我可以幫助創建一個更好的方式來感謝你。

感謝

+0

請按照後指導!如果你想讓人們花時間回答你的問題,你需要努力給他們一些工作。 –

+0

對不起,我會生成一個更好的問題。 –

+0

看起來你已經很好了,看起來更新的問題! –

回答

1

你的代碼是好的,除了一個小bug:

hora_inicio = "%s.%s" % (str(fecha_ini.hour) , str(fecha_ini.minute)) 

應該

hora_inicio = "%s.%s" % (str(fecha_ini.hour) , str(fecha_ini.minute // 60)) 

使30分鐘= 0.5(而不是0.3

相關問題