如何根据我在 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服务并检查。
我试图导出出勤的日期时间字段,但我得到了错误的日期时间值。它给出的是 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服务并检查。