2014-05-14 92 views
0

我正在使用JXDatepicker来获取某人的出生日期,而我所要做的是设置另一个JXDatepicker与退休日期。因此,这里的想法是获得出生日期的一年,并在一年内循环增加,直到“人”达到60岁并保持出生日期和月份相同。或者我认为这就是我所拥有的去做。但我似乎无法找到如何使用Calendar类和DateFormat类来做这个计算,我尝试了不同的东西,但没有任何工作,最接近的是日期01/01/1970,这不能是人的退休日期,因为我的测试总是在2014年所以它应该是2074.Java日期和年龄

那么我该如何做计算?如果有人能给我一个关于如何去做的例子,我会很感激。

(这似乎是我没有做足够的研究,但我做到了,我不觉得我为什么要提到我发现了什么,因为它并没有帮助我)

+0

你应该表现出你已经试过* *所以我们可以帮你解决这个问题,而不是从头开始。 (您不应该使用'DateFormat'来执行任何*计算......这仅仅用于字符串格式化/解析。) –

+0

如果您有兴趣使用Java进行日期计算,那么您应该查看JodaTime或,如果Java 8可用,则使用新的'java.time' API。 – Smallhacker

+0

@Smallhacker,是的,我尝试过,但我不知道如何使用它,因为我有一个问题,理解oracle文档..但现在给我的答案工作,所以无论如何,谢谢大家。 – user3610008

回答

1

您不应该编写任何循环来为您的日期添加60年。 您可以从您JXDatePicker得到一个选定的日期和那样做:

final Calendar cal = Calendar.getInstance(); 
cal.setTime(date); 
cal.add(Calendar.YEAR, 60); 
final Date retirementDate = cal.getTime(); 
+1

谢谢,但现在我感到很蠢:p!问题是我不知道call.add()方法,或者至少我不知道如何使用它。现在它只是工作......像这花了我两天那么简单 - - !对此,我真的非常感激。我会尽快接受你的回答,抱歉我不能投票,我没有足够的声望。 – user3610008

1
地球上

为什么会你必须在循环中添加60次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 
    } 
} 
+0

是的,我有时候变得很愚蠢-_-!现在我想起来我感到羞愧:p!但无论如何谢谢你。 – user3610008