先根据错误的原因分个类
系统存储本身限制。最经典当属千年虫
时区问题。目前常见的话,使用容器时默认时区是美国的,直接使用会出现。
服务器时间未同步。这样的bug,不常见,但项目做多了,还是有几率碰见…
开发人员使用不当。 代码bug…
系统设计问题导致
以2038举例来说,时间是按照1970年1月1日起至所存储日期过去了多少秒来计算的。这个数值是在系统里用32位来表示的,并且有正负。那么 1970年 + 2^31秒(约68年) 就是这个系统友链交易最终支持的时间,超过就变成负数。比特币中的数值无正负,所以能再延长一倍的时间。
按理说,这个时间还早,到时候问题会解决,当历史告诉我们,未必! 例如 2000年。 与之类似的还有 民国百年 ,他们系统年只有2位,当100的时候就无法显示…
以上问题解决也简单,换个存储方式即可,例如MySQL timestamp 更换成datetime ,或使用long存储。 不过要注意时区问题。
我们周会分享这个问题原因是,设置一个时间是2099年的。而``timestamp` 最大就2038年,问题来了!
时区问题
只在容器上碰见过
docker默认时区是美国的,所以有时间相关的项目在做DockerFile时一定要注意,
第一次碰见的时候,以为是数据库时区问题
排查没问题后,又以为是数据库链接的问题
排查再没问题后,以为是使用LocalDateTime的问题,到这也就发现。其实是容器的问题!
开发中遇到的时间类型bug
最新推荐文章于 2023-09-08 23:45:38 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)