Fork me on GitHub

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

posted @ 2025-03-30 11:20  WantRemake  阅读(30)  评论(0)    收藏  举报