Определите вашу дату попадает между набором дат - PullRequest
0 голосов
/ 22 мая 2019

У меня есть входной параметр MMDD-MMDD, и у меня есть один пример значения даты 10 ноября, поэтому теперь мне нужно проверить, попадает ли 10 ноября между MMDD-MMDD.

В настоящее время у меня есть код, который работает нормально, еслиформат подобен этому 0122-1123, но не работает для 1123-0122.

Итак, я сделал одно решение, но оно не работает.Когда диапазон дат перевернут (1123-0122), я добавлю год к обоим и добавлю плюс год к 0122, чтобы он стал с 23 ноября по 22 января 2020 года, но я выбрал одну дату (21 января 2009 года)тогда, очевидно, он не был выбран, не могли бы вы помочь мне с логикой, чтобы определить, попадает ли данная дата в диапазон или нет без использования года.

Date procDate = getProcessDateTime().getDate();
String dateRanges=getDateRange().trim();
int leftSetMonth = Integer.parseInt(dateRanges.substring(0, 2));
int leftSetDate = Integer.parseInt(dateRanges.substring(2, 4));
int rightSetMonth = Integer.parseInt(dateRanges.substring(5, 7));
int rightSetDate = Integer.parseInt(dateRanges.substring(7, 9));

Date leftCollectiveDate = new Date(procDate.getYear(), leftSetMonth, leftSetDate);

Date rightCollectiveDate = new Date(procDate.getYear(), rightSetMonth, rightSetDate);

if (leftCollectiveDate.isAfter(rightCollectiveDate)) {
    rightCollectiveDate = new Date(procDate.getYear() + 1, rightSetMonth, rightSetDate);
}

if (leftCollectiveDate.isSameOrBefore(procDate) && rightCollectiveDate.isSameOrAfter(procDate)) {
    result = Bool.TRUE;
    return result;
}

1 Ответ

1 голос
/ 22 мая 2019

Вот решение с использованием LocalDate (с использованием переменных, объявленных в вопросе)

LocalDate localDate = Instant.ofEpochMilli(procDate.getTime()).atZone(ZoneId.systemDefault()).toLocalDate();

LocalDate fromDate = LocalDate.of(localDate.getYear(), leftSetMonth, leftSetDate);
LocalDate toDate = LocalDate.of(localDate.getYear(), rightSetMonth, rightSetDate);

if (toDate.isBefore(LocalDate.now())) {
  toDate = toDate.plusYears(1);
}

if (localDate.isAfter(from) && localDate.isBefore(to)) {
  System.out.println(localDate + " is valid");
} else {
  System.out.println("Out of range");
}
...