Дата и възраст на Java

Използвам JXDatepicker, за да получа рождената дата на човек и това, което трябва да направя, е да задам друг JXDatepicker с датата на пенсиониране. Така че идеята тук е да получа годината на датата на раждане и да я увеличавам с една година в цикъл, докато „лицето“ достигне 60 години и да запазя същия ден и месец на раждане. Или мисля, че това е, което имам да направя. но изглежда не мога да намеря как да използвам класовете Calendar или класовете 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, да, опитах това, но не знаех как да го използвам, тъй като имам проблем с разбирането на документите на oracle.. но сега отговорът, който ми беше даден, проработи, така че все пак благодаря на всички.   -  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