go后端日期时区的问题记录

寒江蓑笠翁大约 2 分钟问题记录mysqlgotime

go后端日期时区的问题记录

记录一次go后端日期时区问题的记录


在通常的前后端交互中,日期是一个经常很令人头痛的问题,需要统一格式,统一时区等等。

在最近的一个项目中,前端根据YYYY/MM/DD hh:mm:ss格式传给后端,后端解析成time.Time类型,但是这犯了一个很严重的错误。

在解析日期字符串时,如果没有按照格式传递时区偏移,例如+0800 CST 等格式,go将会默认解析为+0000 UST的时区,由于数据库设置为了同步设置了东八区,一看传过来的数据是UST时区的,就误认为需要修正时区,结果就是存储到数据库的数据会比实际时间多出八小时。

解决办法1:

前端在传递给后端日期时,前端自己带上时区信息,+0800 CST类似这种

解决办法2:

后端根据客户端请求头中的时区信息, 将传递过来的日期加上时区信息

当添加上正确的时区信息过后,时间的读写才会是正常的。

上次编辑于:
贡献者: 246859