如何根据我在 odoo 11 中的时区导出日期时间?

How to export date time as per my timezone in odoo 11?

我试图导出出勤的日期时间字段,但我得到了错误的日期时间值。它给出的是 UTC 日期时间,而不是我的时区日期时间。

我该如何解决这个问题?请帮助我。

我刚刚更新了 Web 模块控制器的 main.py 文件。您可以在继承 main.py 文件中执行此操作。

在 main.py

中导入以下包
from dateutil.parser import parse
import datetime
import pytz

-->在 CSVExport class 中更新 CSV。在此 class.

中添加以下代码
def check_date(self, value):
try:
    parse_data = parse(value)
    return parse_data
except Exception as e:
    return False

像下面的代码一样更新 from_data() 函数。

def from_data(self, fields, rows):
   fp = io.BytesIO()
   writer = pycompat.csv_writer(fp, quoting=1)
   writer.writerow(fields)
   for data in rows:
     row = []
     for d in data:
        if isinstance(d, pycompat.string_types) and d.startswith(('=', '-', '+')):
            d = "'" + d
        if type(d) is str:
            parse_data = self.check_date(d)
            if parse_data:
                if len(d) > 10:
                    tz = pytz.timezone(request._context.get('tz'))
                    d = (pytz.utc.localize(datetime.datetime.strptime(d,'%Y-%m-%d %H:%M:%S')).astimezone(tz)).strftime('%Y-%m-%d %H:%M:%S')

        row.append(pycompat.to_text(d))
     writer.writerow(row)
  return fp.getvalue()

-->对于 Excel 在日期时间条件下更新 ExcelExportV class 中的以下代码。

elif isinstance(cell_value, datetime.datetime):
  tz = pytz.timezone(request._context.get('tz'))
  cell_value = (pytz.utc.localize(cell_value).astimezone(tz)).strftime('%Y-%m-%d %H:%M:%S')
  cell_style = datetime_style

之后,重启你的odoo服务并检查。