如何使用 java 计算数据库中的日期与当前日期之间的天数差异

How to calculate difference in days between the one from database and current date using java

我从数据库中检索日期(使用 mysql)

java.sql.Date dbSqlDateLastRecord = result.getDate("date");

java.util.Date LastRecord = new java.util.Date(dbSqlDateLastRecord.getTime());  

并获取当前日期

LocalDate today = LocalDate.now(); 

但是我没有找到如何计算这两者之间的天数差异。怎么做到的? 'difference' 我的意思是如果我有以下两个:2018-05-25" 和 "2018-05-24" 我会得到 1.

你的意思是:

java.sql.Date dbSqlDateLastRecord = result.getDate("date");

//Convert java.sql.Date to LocaDate
LocalDate dateDB = dbSqlDateLastRecord.toLocalDate();

LocalDate dateSS = LocalDate.now();

然后你可以得到它们之间的区别:

import java.time.Duration;
...
long days = Duration.between(dateDB.atStartOfDay(), dateSS.atStartOfDay()).toDays();

或:

import java.time.temporal.ChronoUnit;
...
long days = ChronoUnit.DAYS.between(dateDB, dateSS);

不要使用 java.sql.Date。不要使用 java.util.Date。 类 都已经过时了。也不要使用任何转换。从数据库中获取一个LocalDate

    LocalDate dateDB = result.getObject("date", LocalDate.class);

这至少需要 Java 8,至少 JDBC 4.2。我猜你在那里很久了。然后按照 进行操作,例如:

    long days = ChronoUnit.DAYS.between(dateDB, dateSS);

也只需将 LocalDate 存储回您的数据库,例如

    yourPreparedStatement.setObject(4, LocalDate.now(yourZoneId));