Как рассчитать разницу в днях между датой из базы данных и текущей датой, используя Java - PullRequest
0 голосов
/ 26 мая 2018

Я получаю дату из базы данных (используя 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 голосов
/ 26 мая 2018

Не используйте java.sql.Date.Не используйте java.util.Date.Оба класса давно устарели.Также не используйте никаких преобразований.Получить LocalDate из базы данных:

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

Для этого требуется как минимум Java 8 и, по крайней мере, JDBC 4.2.Я думаю, ты долго там.Затем выполните YCF_L 'ответ , например:

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

Также просто сохраните LocalDate обратно в базу данных, например

    yourPreparedStatement.setObject(4, LocalDate.now(yourZoneId));
0 голосов
/ 26 мая 2018

Вы имеете в виду:

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