
java 程序运行环境是 CST 时区,mysql 服务是 UTC 时区。存储数据时,Date 类型存储会减去 8 小时,LocalDateTime 存储会按照 CST 直接存储。
问题 1: 那么在不修改环境时区的情况下,这两种存储按说哪个是对的?
问题 2: 现在读取时 Date 格式的展示正确,LocalDateTime 展示时会再加上 8 小时导致时间快 8 小时。怎么正确的解决这个问题。。
问题 3: 马上要用了,怎么快速的修复这个问题???
1 airfling 2019-04-23 15:21:44 +08:00 统一时区,就这样 |
2 coolyujiyu 2019-04-23 15:28:22 +08:00 你自己是什么时区,就都统一为什么时区,配置运行环境,甚至早过于你编码 |
3 rizon OP @airfling #1 @coolyujiyu #2 是应该统一时区,统一之后就没问题了。可是我好奇的是,这个现象。 为什么在时区不一样的时候,存的时候一个会直接存一个会减 8 而展示的时候又为啥都加了 8 ?? |
4 lihongjie0209 2019-04-23 15:35:20 +08:00 LocalDateTime 没有时区这个概念, 只是一个对于时间的表示 如果要时区,那么使用 ZonedDateTime |
5 zhfish 2019-04-23 15:36:29 +08:00 这个是 mysql connector 搞的鬼吧,本意是要自动处理时区问题 你也可以加参数忽略时区 不管是主机环境还是 docker 环境,都要注意时区的 |
6 zhfish 2019-04-23 15:36:54 +08:00 @lihongjie0209 说的对,其实和 LocalDateTime 没什么关系 |
7 learnshare 2019-04-23 15:37:33 +08:00 展示的时候进行了格式化,时区又一次产生了影响 |
8 chendy 2019-04-23 15:39:47 +08:00 还要看数据库字段用的啥,以及转换的代码怎么写的(或者用的什么框架 /工具) java 的 Date,数据库的 Timestamp 本质上是时间戳,时区不同展现不同 java 的 LocalDateTIme,数据库的 DateTime,是写死的日期时间,怎么看都一样 数据库的时区和客户端的时区不同其实并没有太大问题,转换的逻辑没写错就是 |
9 FrankFang128 2019-04-23 15:42:25 +08:00 ISO 8601 了解一下,存绝对时间,JSON 里面用 ISO 8601 |
10 sonyxperia 2019-04-23 15:42:45 +08:00 LocalDateTime 表示这锅不背 |
11 DarrenLuo 2019-04-23 15:44:04 +08:00 via Android 数据库连接字符串里加上 timezOne=utc,这样 mysql 驱动会在存储的时候处理为 utc 时间,取出来的时候按机器的时区取出来 |
12 broadliyn 2019-04-23 15:51:08 +08:00 1. 首先要看你 java 这边用的持久框架是什么,mybatis 或者是其他? 2. 你的 mysql 驱动版本号是? |
13 gaius 2019-04-23 15:56:53 +08:00 应该是你设置了 jdbc 连接的时区是+8,但是数据库是+0,而且数据库存储时间的那个类型是支持时区的。 |
14 yangbai 2019-04-23 16:00:08 +08:00 LocalDateTime Date 存的都是 UTC 的绝对时间戳,输出出来想怎么格式化看你的使用和环境 |
15 octocatami 2019-04-23 16:00:33 +08:00 注意操作系统时区 |
16 ARhen 2019-04-23 16:01:45 +08:00 之前就因为没统一时区导致爬虫判断发布时间出错了 //..// |
17 Cat73 2019-04-23 16:02:05 +08:00 我们是所有地方统一 UTC 时间的,展示的地方自己去格式化 |
18 rizon OP @Cat73 #17 嗯哼~看到一个萌妹子老乡唉~ 有在打算回去工作呢。 互链 blog 吗~~ https://rizon.top |
19 JasonP 2019-04-23 17:28:28 +08:00 是存到数据库保存的时间和 应用中的时间不一致么?可能是因为数据库连接没有配置 serverTimezone。 |
20 ourslay 2019-04-23 17:51:32 +08:00 via Android ORM 用的什么? MySQL 版本多少? |
21 Cat73 2019-04-24 09:44:48 +08:00 |
22 wuyao946 2019-04-24 15:51:43 +08:00 数据库连接 url 指定时区&serverTimezOne=Asia/Shanghai |