odoo运行时时间有时忘记转换默认成了UTC时间,导致数据库中以及导出的文件中时间比实际的中国标准时间早8小时,故可以使用如下代码修改
import datetime, pytz
from odoo.fields import Datetime
Newdatetime = Datetime.convert_to_export
def convert_to_export(self, value, record):
timezone = pytz.timezone('Asia/Shanghai')
return_val = Newdatetime(self, value, record)
if isinstance(return_val, datetime.datetime) and return_val:
return self.to_string(return_val.replace(tzinfo=pytz.timezone('UTC')).astimezone(timezone))
elif return_val:
return self.to_string(self.from_string(return_val).replace(tzinfo=pytz.timezone('UTC')).astimezone(timezone))
return return_val
Datetime.convert_to_export = convert_to_export
TimeZone timeZone1 = TimeZone.getDefault();
String[] availableIDs = TimeZone.getAvailableIDs();
TimeZone.getTimeZone("Asia/Shanghai");
TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));
TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai");
System.out.println(timeZone.getDisplayName());
System.out.println(timeZone.getDisplayName(false, TimeZone.LONG));
System.out.println(timeZone.getDisplayName(false, TimeZone.SHORT));
getDisplayName(boolean daylight, int style);
TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai");
System.out.println(timeZone.getOffset(System.currentTimeMillis()));
TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai");
timeZone.setRawOffset(25200000);
System.out.println(timeZone.getRawOffset());