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
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
|