Должен написать многопоточную программу. Один из этапов разработки - поиск разницы во времени (разница может быть в годах, в месяцах или днях, в зав-ти от входных данных. Разница расчитывается с датой в прошлом и текущим временем).
Пробовал разные варианты, в виду недостатка опыта никак не могу подобрать решение, не знаю что использовать: LocalDate, Date, Calendar или иные варианты. На данный момент использую LocalDate, но путь как мне кажется не верен (не могу сравнить год и месяц).
Вопрос таков - какой тип данных я должен использовать для сохранения момента в прошлом (год, месяц, день) для последующего успешного сравнения (желательно путем обычного вычитания аля resultYear = firstYear - secondYear)?
package myDefaultPackage;
import java.time.*;
public class Timer extends Thread {
public static final LocalDate DATE_OF_SESSION = LocalDate.of(2012, Month.DECEMBER, 12);
public static LocalDate differenceOfTheTime;
public void run() {
LocalDate now;
while (!Thread.currentThread().isInterrupted()) {
try {
sleep(500);
now = LocalDate.now(); // получение текущей даты
}
catch (InterruptedException e) {
}
}
}
/*
* Сравниваем два объекта LocalDate, возвращаем их разницу в виде
* объекта LocalDate*/
LocalDate compare(LocalDate dateOfSession, LocalDate compared) {
LocalDate resultYear = dateOfSession - compared;
}
}
3 снизу cтрочка кода, где производится вычитание, выдает ошибку
The operator - is undefined for the argument type(s)
java.time.LocalDate, java.time.LocalDate.
Что посоветуете использовать вместо LocalDate или как сравнить LocalDate (год и месяц)?
LocalDate last = LocalDate.of(2017, 6, 2);
LocalDate first = LocalDate.of(2005, 10, 8);
LocalDate resultDate = compare(last, first); //returns 0011-08-25
LocalDate compare(LocalDate dateOfSession, LocalDate compared)
{
long resultDays = ChronoUnit.DAYS.between(compared, dateOfSession);
return LocalDate.of(0, 1, 1).plusDays(resultDays - 1);
}
Чтобы узнать разницу только в годах можно использовать методы
ChronoUnit.YEARS.between(first, last); //returns 11Period.between(first, last).getYears();Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости