UTC 和 CST 时间的问题

发布于 2022-09-11 21:53:32 字数 153 浏览 18 评论 0

  • 前端传递给后端的时间格式是:2019-08-28T16:55:39.000Z,后端JAVA拿到后会将时间+8写入MYSQL
  • 这种问题应该在前端(Angular)解决还是后端JAVA解决,或者在MYSQL ?
  • 希望提供你知道的最优解

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

ㄟ。诗瑗 2022-09-18 21:53:32

这个你要看是前端出错还是后端出错,前端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

三寸金莲 2022-09-18 21:53:32

问题解决了。
后端使用了 java + springmvc + mybatis,前端的时间对的,发送给后端 java 时被追加了8小时,只要在模型类的setter方法上添加注解:@JsonFormat(shape = JsonFormat.Shape.STRING,pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8"),就解决问题了。当然中间的时间格式要和前端传输来的保证一致。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文