编写了获取当前datetime 时间的方法如下
// GetCurrentDateString 获取当天的时间date func GetCurrentDateString() time.Time { // 获取当前时间 currentTime := time.Now().Local() // 格式化日期为字符串 dateString := currentTime.Format(time.DateTime) resultTime, _ := time.Parse(time.DateTime, dateString) return resultTime }
插入db之后发现时间+8了。
造成以上原因是因为反序列化之后时区信息丢失了。所以没有时区的时候time到db用的是国际时间。所以跟北京/上海时间大致会相差8h
解决方案 反序列化的时候代码改成 :
// GetCurrentDateString 获取当天的时间date func GetCurrentDateString() time.Time { // 获取当前时间 currentTime := time.Now().Local() // 格式化日期为字符串 dateString := currentTime.Format(time.DateTime) resultTime, _ := time.ParseInLocation(time.DateTime, dateString, time.Local) return resultTime }
如果时间字符串中带了时区信息才去使用 time.Parse,否则使用 time.ParseInLocation
排查db 和本地时间对不上的思路方案:
检查链接字符串是否添加时区信息 例如 : parseTime=true&loc=Local
检查服务器当前时区 是否正确: timedatectl | grep “Time zone”
检查mysql 时区设置:SHOW VARIABLES LIKE '%time_zone%';
阿里云AnalyticDB实例Datatime 类型最多精确到秒。使用TIMESTAMP可以存储'2024-03-11 15:22:11.4688249' 。 使用起来和Mysql实例有差距
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...