2016-04-28 5 views
1

У меня есть дата рождения человека, и мне нужно проверить, родились ли они до подходящей даты (в моем сценарии должно быть не менее 21 года) , Я хотел бы использовать java.util.Date, а не Calendar. Как я могу проверить это?Проверьте, кто-то имеет определенный возраст от DOB - JAVA

У меня есть что-то вроде этого, но он никогда не сможет работать эффективно:

Date eligableDate = new Date(28/04/1995);  
drivingLicence.getDOB().before(eligableDate) 
+0

.net, но не блокирующие http://stackoverflow.com/a/11942/706695 – HRgiger

+0

В чем проблема с использованием «Календаря»? – Blip

+0

Возможно ли использовать функции Java8? Например, 'ChronoUnits' следующим образом:' ChronoUnit.YEARS.between (день рождения, сегодня); ' –

ответ

0

Я бы рекомендовал использовать JodaTime

Но если вы хотите сделать это с датой:

private static final long MILLIS_IN_SECOND = 1000L; 
private static final long SECONDS_IN_MINUTE = 60L; 
private static final long MINUTES_IN_HOUR = 60L; 
private static final long HOURS_IN_DAY = 24L; 
private static final long DAYS_IN_YEAR = 365L; 
private static final long MILLISECONDS_IN_YEAR = MILLIS_IN_SECOND * SECONDS_IN_MINUTE * MINUTES_IN_HOUR * HOURS_IN_DAY * DAYS_IN_YEAR; 
private static final int AGE_LIMIT = 21; 

private boolean isEligible(final Date dateOfBirth) { 
    long yearLimitInLong = AGE_LIMIT * MILLISECONDS_IN_YEAR; 
    Date date = new Date(); 
    Date dateThreshold = new Date(date.getTime() - yearLimitInLong); 

    return dateOfBirth.before(dateThreshold); 
} 
0

Формат даты в вашем примере, я думаю, неверен. Пожалуйста, обратите внимание на следующее:

public Date(int year, int month, int date) { 
    this(year, month, date, 0, 0, 0); 
} 

* @param year the year minus 1900. 
* @param month the month between 0-11. 
* @param date the day of the month between 1-31. 

Так что ваш нелогич- может быть:

import java.util.Date; 
Date eligableDate = new Date(95, 4, 28); 
drivingLicence.getDOB().before(eligableDate); 
Смежные вопросы