UTC 和 CST 时间的问题
- 前端传递给后端的时间格式是:2019-08-28T16:55:39.000Z,后端JAVA拿到后会将时间+8写入MYSQL
- 这种问题应该在前端(Angular)解决还是后端JAVA解决,或者在MYSQL ?
- 希望提供你知道的最优解
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
这个你要看是前端出错还是后端出错,前端2019-08-28T16:55:39.000Z格式是UTC格式,Z就表示UTC,你看看前端这个时间是不是错了,如果错了就改前端,既然是UTC时间,那么这个UTC时间应该比前端输入的时间少8个小时。
如果2019-08-28T16:55:39.000Z确实比我们要的时间少8个小时,也就是我们想要的是29日0点55分的时间,那么表示成2019-08-28T16:55:39.000Z就是对的,然后传到后端,java的java.sql.Timestamp是没有时区信息的,你需要自己约定这些时间的时区,这样,你如果用来读取2019-08-28T16:55:39.000Z之类格式的时间,则应约定所有时间都是UTC。
但这样又有问题,mysql如果要使用UTC时间,可能需要在连接url上加入serverTimezone=UTC
问题解决了。
后端使用了 java + springmvc + mybatis,前端的时间对的,发送给后端 java 时被追加了8小时,只要在模型类的setter方法上添加注解:@JsonFormat(shape = JsonFormat.Shape.STRING,pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8"),就解决问题了。当然中间的时间格式要和前端传输来的保证一致。