go后端日期时区的问题记录
大约 2 分钟
go后端日期时区的问题记录
记录一次go后端日期时区问题的记录
在通常的前后端交互中,日期是一个经常很令人头痛的问题,需要统一格式,统一时区等等。
在最近的一个项目中,前端根据YYYY/MM/DD hh:mm:ss
格式传给后端,后端解析成time.Time
类型,但是这犯了一个很严重的错误。
在解析日期字符串时,如果没有按照格式传递时区偏移,例如+0800 CST
等格式,go将会默认解析为+0000 UST
的时区,由于数据库设置为了同步设置了东八区,一看传过来的数据是UST时区的,就误认为需要修正时区,结果就是存储到数据库的数据会比实际时间多出八小时。
解决办法1:
前端在传递给后端日期时,前端自己带上时区信息,+0800 CST
类似这种
解决办法2:
后端根据客户端请求头中的时区信息, 将传递过来的日期加上时区信息
当添加上正确的时区信息过后,时间的读写才会是正常的。