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服务即可