[英]How to calculate difference in days between the one from database and current date using java
I retrieve the date from database (using mysql) 我从数据库中检索日期(使用mysql)
java.sql.Date dbSqlDateLastRecord = result.getDate("date");
java.util.Date LastRecord = new java.util.Date(dbSqlDateLastRecord.getTime());
and also get a present date 并得到现在的日期
LocalDate today = LocalDate.now();
However I didn't find how to calculate the difference in days between those two. 但是我没有找到如何计算这两者之间的天差。 How it can be done?
怎么做? By 'difference' I mean that if I have the following two: 2018-05-25" and "2018-05-24" I will get 1.
“差异”是指如果我具有以下两个:2018-05-25“和” 2018-05-24“我将得到1。
You mean : 你的意思是 :
java.sql.Date dbSqlDateLastRecord = result.getDate("date");
//Convert java.sql.Date to LocaDate
LocalDate dateDB = dbSqlDateLastRecord.toLocalDate();
LocalDate dateSS = LocalDate.now();
Then you can Get difference between them : 然后,您可以得到它们之间的区别:
import java.time.Duration;
...
long days = Duration.between(dateDB.atStartOfDay(), dateSS.atStartOfDay()).toDays();
Or : 要么 :
import java.time.temporal.ChronoUnit;
...
long days = ChronoUnit.DAYS.between(dateDB, dateSS);
Don't use java.sql.Date
. 不要使用
java.sql.Date
。 Don't use java.util.Date
. 不要使用
java.util.Date
。 Both classes are long outdated. 这两类都已经过时了。 Also don't use any conversions.
也不要使用任何转换。 Get a
LocalDate
from the database: 从数据库获取
LocalDate
:
LocalDate dateDB = result.getObject("date", LocalDate.class);
This requires at least Java 8 and at lease JDBC 4.2. 这至少需要Java 8和至少JDBC 4.2。 My guess is you're long there.
我的猜测是你在那里很久。 Then proceed as in YCF_L' answer , for example:
然后按照YCF_L'的答案进行操作 ,例如:
long days = ChronoUnit.DAYS.between(dateDB, dateSS);
Also just store a LocalDate
back into your database, for example 也只需将
LocalDate
存储回数据库中,例如
yourPreparedStatement.setObject(4, LocalDate.now(yourZoneId));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.