postgres 时区问题
var insertInfo = _temperingHistoryService.Insert(temperingHistory);
if (insertInfo.Id != 0)
{
insertInfo.StartTime = insertInfo.StartTime.ToLocalTime();
TemperingHistorys.Add(insertInfo.Id, value: insertInfo);
}
postgres 数据库存的是带时区的,但是我这边现在是插入数据的时候同时把该条数据插入缓存字典TemperingHistorys中,我插入的时间是utctime,如果不转一下的话,前台显示的时间是有问题的,需要转换成localtime,我上面的语句看起来
是没问题的,已经插入数据了,然后再转的时间格式,但是,实际是有问题的,EFCore中虽然数据已经插入,但是数据实体还是会被追踪,当下一次插入的时候就会报错,提示时区问题,正确的操作应该是克隆一个新的变量去插入
var insertInfo = _temperingHistoryService.Insert(temperingHistory);
if (insertInfo.Id != 0)
{
var dictEntry = new TemperingHistory
{
Id = insertInfo.Id,
StartTime = insertInfo.StartTime.ToLocalTime(),
TemperNo = insertInfo.TemperNo,
TemperName = insertInfo.TemperName,
Num = insertInfo.Num,
Status = insertInfo.Status,
ImageSource = insertInfo.ImageSource,
GlassSize = insertInfo.GlassSize,
JsonData = insertInfo.JsonData
};
TemperingHistorys.Add(dictEntry.Id, dictEntry);
}
可能发生的问题
两台电脑存入数据库的时间不一致,总是差了8小时
1.排查两台电脑设置的时区是否一致
2.排查两台电脑postgres设置的时区是否一致,不一致修改修改postgres.conf文件
SHOW timezone; 查看时区
SHOW config_file; conf文件地址
如果conf里面的时区不一致需要改为一致,修改timezone 属性值
修改完之后再重启一下postgres服务即可

浙公网安备 33010602011771号