【问题标题】:Java date and ageJava 日期和年龄
【发布时间】:2014-05-14 15:00:49
【问题描述】:

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

那么我该如何计算呢?如果有人能给我一个如何做的例子,我将不胜感激。

(似乎我没有做足够的研究,但我做了,我不明白为什么我会提到我发现的东西,因为它对我没有帮助)

【问题讨论】:

  • 您应该展示您尝试过的内容,以便我们可以帮助您解决这个问题,而不是从头开始。 (您不应该使用DateFormat 来进行任何 计算...这只是用于字符串格式化/解析。)
  • 如果您有兴趣在 Java 中进行日期计算,您可能应该看看 JodaTime,或者,如果 Java 8 可用,新的 java.time API。
  • @Smallhacker,是的,我试过了,但我不知道如何使用它,因为我在理解 oracle 文档时遇到了问题。但现在给我的答案有效,所以谢谢大家无论如何。

标签: java date calendar simpledateformat swingx


【解决方案1】:

您不应该编写任何循环来将 60 年添加到您的日期。 你可以从你的 JXDatePicker 中获取一个选定的日期,然后这样做:

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

【讨论】:

  • 谢谢你,但现在我觉得自己很愚蠢:p!问题是我不知道 call.add() 方法,或者至少我不知道如何使用它。现在它开始工作了......像这样简单的事情花了我两天时间-_-!对此,我真的非常感激。我会尽快接受你的回答,很抱歉我不能投票,我没有足够的声誉。
【解决方案2】:

为什么您必须在循环中添加 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
    }
}

【讨论】:

  • 是的,我有时会变得愚蠢-_-!现在我想到它我感到很惭愧:p!不过还是谢谢你。
猜你喜欢
  • 1970-01-01
  • 2014-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-25
  • 2015-09-15
相关资源
最近更新 更多