前置条件

MySql,jdk1.8,LocalDateTime

使用场景

需要获取到指定时间在当天的23.59.59

1
2
3
4
第一次使用的时候
LocalDateTime.of(LocalDate.now(), LocalTime.MAX)
得到的结果是
2020-07-18T23:59:59.999999999

数据库时间字段为datetime类型,当把这个值入库时,库里会变成

1
2020-07-19 00:00:00 会发现后面的999999被进位了,但是这不是我们实际业务需要的值

更改

两种方式可以解决

  1. 通过 LocalTime.of(23, 59, 59)
    1
    2
    3
    LocalDateTime.of(LocalDate.now(), LocalTime.of(23, 59, 59))
    得到的结果
    2020-07-18T23:59:59
  2. 通过 LocalDateTime下的truncatedTo阶段返回一个时间对象的副本
    1
    2
    3
    LocalDateTime.of(LocalDate.now(), LocalTime.MAX).truncatedTo(SECONDS)
    得到的结果
    2020-07-18T23:59:59
    这种方式按照文档的解释,是将truncatedTo的参数认为我需要截断的位置,然后将该位置之后的值变为0
    详细的解释找找对应方法的使用和官方文档吧~~~~
    改用这种方法后,数据库存入的值也正常了~~~
    随便写写完结