繁体   English   中英

如何在考勤报告中将odoo服务器时区更改为用户时区

[英]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')

这是时区问题。 设置正确的时区。

第1步。

**单击您登录的帐户名称并选择首选项。 **

喜好喜好

第2步

** 更改时区 ** 时区时区

很简单。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM