2016-04-08 1 views
1

Я хочу рассчитать количество дней между «сегодня» и днем ​​рождения пользователя, который он вводит. Это то, что программа должна выглядеть следующим образом:Число дней между сегодняшним днем ​​и днем ​​рождения с использованием класса LocalDate?

When are you born? 19961020 // the user inputs this 
Today you are xxxx days old. 

дата должна быть в следующем формате: ГГГГММДД. И программа должна также учитывать високосные годы. Я должен использовать класс LocalDate:

LocalDate datum = LocalDate.now(); 
int år = datum.getYear(); 
int månad = datum.getMonthValue(); 
int dag = datum.getDayOfMonth(); 

Другое дело, что я должен учитывать при кодировании в том, что я должен использовать свой собственный код, а не другие методы, которые уже сделаны. Не могли бы вы мне помочь? Я не знаю, с чего начать или как продолжить мой код.

+1

https://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html#until-java.time.chrono.ChronoLocalDate- может быть? (или другое «до») –

+0

см. также http://math.stackexchange.com/questions/683312/formula-to-calculate-difference-between-two-dates (для некоторого «математического» подхода) –

+0

вы можете использовать 'java.util.Calendar' API, например: http: //tutorials.jenkov.com/java-date-time/java-util-calendar.html – gihan

ответ

0

Разбор строк.

Ваша входная строка находится в стандартном формате ISO 8601. Классы java.time используют этот стандарт как свой по умолчанию при разборе/генерации текстовых представлений значений даты и времени. Поэтому нет необходимости указывать свой собственный шаблон форматирования; используйте pre-defined format.

LocalDate birthDate = LocalDate.parse("19961020" , DateTimeFormatter.BASIC_ISO_DATE); 

Получить сегодня. Обычно я рекомендую передать ZoneId здесь для точности, но дайте или возьмите день, не имеет значения здесь в этом сценарии.

LocalDate today = LocalDate.now(); 

Запросить дни между классом ChronoUnit.

long days = ChronoUnit.DAYS.between(birthdate , today); 

Period

Вы можете использовать Period класс, который представляет собой промежуток времени, как несколько лет, месяцев и дней.

Period period = Period.between(birthdate , today); 
+0

Спасибо, Василий! Я попробую это решение –

+0

Это сработало! Спасибо! Но дело в том, есть ли способ получить тот же результат без использования всех этих классов, кроме класса LocalDate? Я должен написать код полностью с моим собственным кодом –

+0

@AdamRana Вы имеете в виду, что это домашнее задание в школьном классе? Вы должны сказать это в своем Вопросе. –