Дата и возраст Java

Я использую JXDatepicker для получения даты рождения человека, и мне нужно установить другой JXDatepicker с датой выхода на пенсию. Итак, идея здесь состоит в том, чтобы получить год даты рождения и увеличивать его на один год в цикле, пока «человек» не достигнет 60 лет, и сохранить тот же день и месяц рождения. Или я думаю, что это то, что у меня есть сделать. но я не могу найти, как использовать классы календаря или классы DateFormat для выполнения этого расчета, я пробовал разные вещи, но ничего не работает, самое близкое, что я получил, это дата 01/01/1970, которая не может быть Дата выхода на пенсию человека с даты рождения, которую я проверяю, всегда приходится на 2014 год, поэтому она должна быть 2074 года.

Итак, как я могу сделать расчет? Я был бы признателен, если бы кто-нибудь мог привести мне пример того, как это сделать.

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


person user3610008    schedule 14.05.2014    source источник
comment
Вы должны показать, что вы пробовали, чтобы мы могли помочь вам исправить это, а не начинать с нуля. (Вы не должны использовать DateFormat для выполнения каких-либо вычислений... это только для форматирования/анализа строки.)   -  person Jon Skeet    schedule 14.05.2014
comment
Если вы заинтересованы в вычислении даты в Java, вам, вероятно, следует взглянуть на JodaTime или, если доступна Java 8, на новый java.time API.   -  person BambooleanLogic    schedule 14.05.2014
comment
@Smallhacker, да, я пробовал это, но я не знал, как его использовать, так как у меня проблема с пониманием документов оракула ... но теперь ответ, данный мне, сработал, так что все равно спасибо всем.   -  person user3610008    schedule 14.05.2014


Ответы (2)


Вы не должны писать цикл, чтобы добавить 60 лет к вашей дате. Вы можете получить выбранную дату из вашего JXDatePicker и сделать это так:

final Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.YEAR, 60);
final Date retirementDate = cal.getTime();
person Jakub H    schedule 14.05.2014
comment
Спасибо, но теперь я чувствую себя глупо :p! Проблема была в том, что я не знал о методе call.add() или, по крайней мере, не знал, как его использовать. и теперь это просто сработало... такая простая вещь заняла у меня два дня -_-! Я очень ценю это. Я приму ваш ответ, как только смогу, и извините, я не могу голосовать, у меня недостаточно репутации. - person user3610008; 14.05.2014

С какой стати вам нужно добавлять 1 в цикле 60 раз? Почему бы вам просто не добавить 60?

import java.text.SimpleDateFormat;
import java.util.Calendar;

public class Main {

    public static void main(String... args){

        SimpleDateFormat df = new SimpleDateFormat("MM/dd/YYYY");

        Calendar c = Calendar.getInstance();
        System.out.println(df.format(c.getTime())); //prints 05/14/2014

        c.add(Calendar.YEAR, 60);
        System.out.println(df.format(c.getTime())); //prints 05/14/2074
    }
}
person Kevin Workman    schedule 14.05.2014
comment
Да, иногда я тупею -_-! теперь, когда я думаю об этом, мне становится стыдно :p! но все равно спасибо. - person user3610008; 14.05.2014