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

时间:2018-05-26 08:34:23

标签: java mysql date jdbc java-time

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

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

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

并获得当前日期

LocalDate today = LocalDate.now(); 

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

2 个答案:

答案 0 :(得分:3)

你的意思是:

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

答案 1 :(得分:2)

请勿使用java.sql.Date。不要使用java.util.Date。这两个课程都已经过时了。也不要使用任何转换。从数据库中获取LocalDate

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

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

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

还只需将LocalDate存储回数据库,例如

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