Определить, что дата до или после возраста - PullRequest
0 голосов
/ 18 июня 2019

Видимо, в простой задаче, но я усложняюсь с обработкой дат.Мне нужен компаратор даты, который получает в качестве параметров дату в формате гггг-ММ-дд и число (возраст) и определяет, является ли она выше этого числа или ниже.

Например, для 18, 1999-01-01 выше и возвращает true, но для 2010-01-01 false.Если бы это был 2001 год, он сравнивался бы с текущим месяцем и годом, то есть 2001-06-18 был больше или меньше

У меня есть этот код, использующий григорианский API для текущей даты, но яЯ не могу.

Я сделал это

    public static void main (String args[]) throws ParseException{

    //SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    //Date fechaInicial=(Date) dateFormat.parse("1999-01-01");
    java.sql.Datedate1 = new Date(1999-01-01);
    Calendar date2 = Calendar.getInstance();


    boolean res = date(date1, date2);
}

public static boolean date(java.sql.Datedate1, Calendar date2 ){
    //int year=18;
    int y= date2.get(Calendar.YEAR)-18;
    int m = date2.get(Calendar.MONTH)+1;
    int d = date2.get(Calendar.DAY_OF_MONTH);
    System.out.println(
    String fechacompleta= y+"-"+m+"-"+d;
    System.out.println(fechacompleta);

    return ;
}

1 Ответ

4 голосов
/ 18 июня 2019

Вы можете написать свой метод date, используя java.time.LocalDate следующим образом:

public static boolean date(LocalDate ld, int age) {
    Period p = Period.between(ld, LocalDate.now());
    return p.getYears() >= age;
}

Он вычисляет Period между определенной датой и временем и возвращает значение, больше или равно этому периодудо 18 лет.

Вы можете создать LocalDate следующим образом:

LocalDate ld = LocalDate.parse("2001-12-23", DateTimeFormatter.ofPattern("yyyy-MM-dd"));

И передать его в date:

if (date(ld, 18)) {
    // 18 or above!
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...