[英]how to change odoo server timezone to user timezone in attendance report
我已经定制了一个 odoo 报告来打印员工考勤 签入和签出的时间在 UI 中是正确的但是当我打印报告时,每条记录都会增加 2 小时
这是一个时区问题:Odoo 中的日期被写成 UTC 日期时间对象。 当日期在浏览器 UI 中呈现时,它会自动转换为用户的设备时区,但在报告中这种转换不是自动的,其中日期时间字段的呈现与它们在数据库中保存的完全相同。
尝试创建一个根据用户配置解析日期时间对象的方法:
import logging
import pytz
_logger = logging.getLogger(__name__)
def convert_datetime_field(datetime_field, user=None):
dt = datetime.strptime(datetime_field, '%Y-%m-%d %H:%M:%S')
if user and user.tz:
user_tz = user.tz
if user_tz in pytz.all_timezones:
old_tz = pytz.timezone('UTC')
new_tz = pytz.timezone(user_tz)
dt = old_tz.localize(dt).astimezone(new_tz)
else:
_logger.info("Unknown timezone {}".format(user_tz))
return datetime.strftime(dt, '%d/%m/%Y %H:%M:%S')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.