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



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

如何解决此问题?请帮助我。

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

在 main.py 中导入以下包

from dateutil.parser import parse
import datetime
import pytz

-->CSV的CSVExport类中的更新。在此类中添加以下代码。

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类中更新以下代码。

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服务并检查。

最新更新