Java OOP - Как получить год в DOB и текущий год, а затем рассчитать возраст? - PullRequest
0 голосов
/ 26 марта 2020

У меня есть три класса. Мой класс водителя, класс Person и класс Chore .

Мои домашние дела и члены семьи перечислены в двух отдельных файлах csv.

Файл членов семьи содержит только имена и документы (01.01.1901). Итак, первое, что я хочу сделать, - это рассчитать возраст каждого члена семьи на основе года в его доке и получить текущий год, а затем получить разницу между ними. Как выбрать только год для каждого человека и как получить текущий год?

   public int currentAge(LocalDate dob, LocalDate currentDate){
            if ((dob != null) && (currentDate != null)) {
                return Period.between(dob, currentDate).getYears();
            } else {
                return 0;
            }
        }
        public int getCurrentAge(){
            return currentAge;
        }

Ответы [ 3 ]

4 голосов
/ 26 марта 2020

Чтобы рассчитать возраст человека по дате его рождения, используя Java 8+ Time API, используйте этот метод:

public static int getAge(LocalDate dob) {
    LocalDate today = LocalDate.now();
    int age = today.getYear() - dob.getYear();
    if (MonthDay.from(today).isBefore(MonthDay.from(dob)))
        age--; // before birthday in current year
    return age;
}
1 голос
/ 26 марта 2020

Java 8 совместимое решение:

import java.time.LocalDate;
import java.time.Period;
import java.time.format.DateTimeFormatter;

public class Demo
{
    public static void main(String[] args)
    {

        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d/MM/yyyy");
        String date = "16/08/2016";
        LocalDate dob = LocalDate.parse(date, formatter);
        System.out.println(daysBetween(dob));
    }

    private static long daysBetween(LocalDate dob)
    {
        return Period
            .between(dob,
                LocalDate.now())
            .getYears();

    }
}

Мы можем добавить элемент данных в People для хранения информации о хозяйственной работе.

class People{
    private final String name;
    private final LocalDate dob;
    private final String gender;
    private List<Chores> choresList;
    }
0 голосов
/ 26 марта 2020

Вы можете использовать следующий метод или что-то подобное, чтобы получить возраст:

private long daysBetween(Date one, Date two) {
    long difference =  (one.getTime()-two.getTime())/86400000;
    return Math.abs(difference);
}

Подробнее здесь или здесь .

...