當嘗試在記錄中設置“今天”,“明天”,“本週”,“今年”等類似過濾器時,建議的方式將設置如下域:(
“今天”域,其他類似)
<filter string="Today" domain="[('start_datetime','<=', time.strftime('%%Y-%%m-%%d 23:59:59')),('start_datetime','>=', time.strftime('%%Y-%%m-%%d 00:00:00'))]"/>
這些都是錯誤的,它們出現在許多官方和非官方的附件中。第一個將utc時間(‘start_datetime’)與服務器時間進行比較,第二個將utc時間與客戶端時間進行比較。(不確定,第一個也可能是客戶端時間?py.js進行了解析)
正確做法,
<filter string="Today" domain="[('start_at', '>=',
datetime.datetime.combine(context_today(), datetime.time(0,0,0)))]" />
這樣做的目的是避免strftime()完全使用,而直接在域中使用DateTime值,因此將其正確序列化並使用正確的時區信息發送到服務器。
現在這樣寫就可以了
<filter name="filter_time_today" date="time" string="比對時間" default_period="today"/>