使用LocalDateTime导致入库时时间被舍入
前置条件
MySql,jdk1.8,LocalDateTime
使用场景
需要获取到指定时间在当天的23.59.59
1 | 第一次使用的时候 |
数据库时间字段为datetime
类型,当把这个值入库时,库里会变成
1 | 2020-07-19 00:00:00 会发现后面的999999被进位了,但是这不是我们实际业务需要的值 |
更改
两种方式可以解决
- 通过 LocalTime.of(23, 59, 59)
1
2
3LocalDateTime.of(LocalDate.now(), LocalTime.of(23, 59, 59))
得到的结果
2020-07-18T23:59:59 - 通过 LocalDateTime下的truncatedTo阶段返回一个时间对象的副本这种方式按照文档的解释,是将truncatedTo的参数认为我需要截断的位置,然后将该位置之后的值变为0
1
2
3LocalDateTime.of(LocalDate.now(), LocalTime.MAX).truncatedTo(SECONDS)
得到的结果
2020-07-18T23:59:59
详细的解释找找对应方法的使用和官方文档吧~~~~
改用这种方法后,数据库存入的值也正常了~~~
随便写写完结
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 野生Java程序员兼美食博主!
评论