当尝试在记录中设置“今天”,“明天”,“本周”,“今年”等类似过滤器时,建议的方式将设置如下域:(
“今天”域,其他类似)
<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"/>