错误的date()输出java

时间:2013-01-26 17:59:15

标签: java date

首先我要说的是,我知道Date()已被弃用,我已经在这里查看了其他问题,其中每个人都说明了这一点。

我正在做一项涉及使用Java Swing开发GUI的任务,GUI的一部分是出生日期,分别有三个JComboBox用于日,月和年。

我有代码从每三个中获取所选项目然后创建日期:

Integer day = (Integer) dobDay.getSelectedItem();
Integer month = (Integer) dobMonth.getSelectedItem();
Integer year = (Integer) dobYear.getSelectedItem();

Date dob = new Date(day, month, year);

然而正确的日期不是输出的,我得到像

这样的东西
  

出生日期:10月11日星期六00:00:00 GMT 1919

如果我选择14,4& 1900年从组合框。

我无法弄清楚如何纠正这个问题,我感到困惑,因为我有一个controllerConsole类来测试我的类和输入,其中Date()有效,

int dobD = 14;
int dobM = 4;
int dobY = 1990;

Employee e = new Employee("Gethin", 'M', new Date(dobD, dobM, dobY), "02",
    new Date(9, 9, 2011));

即使不推荐使用Date(),我也可以得到我想要的输出:1990年4月14日(我的Date类中有一个monthAsString构造函数,用于将月份数转换为月份名称)。

我真的很感激任何帮助! 我已经看到提到的Calendar类作为对此的回答,因为Date()已被弃用但我的作业要求使用Date()类,我不确定如果我选择使用Calendar而他们会怎么想

4 个答案:

答案 0 :(得分:4)

new Date(1990, 3, 14)

返回:

Sat Apr 14 00:00:00 CEST 1990

这是你所期望的。所有内容都在documentation中解释(请注意参数和有效值的顺序):

  

公共日期(int year,int month,int date)

     

参数:

     
      
  • 年 - 减去1900年。
  •   
  • 月 - 0-11之间的月份。
  •   
  • 日期 - 1-31之间的月份日。
  •   

而BTW:

  

首先我要说我知道Date()已被弃用

不,不是。它的设计很糟糕(可变,令人困惑toString(),并不真正代表...... date),但并未弃用。只推荐使用(错误)使用的构造函数。

答案 1 :(得分:2)

请勿使用弃用的方法。

它是Date(year, month, day),而不是相反。

除此之外,年份值自动添加1900(因此,要获得1999年,year值必须为99),您就可以得到它。

请勿使用弃用的方法。

答案 2 :(得分:1)

Date constructor按此顺序预计年,月和日。你过了日,月,年。

答案 3 :(得分:0)

如果您可以为月份提供字符串值,那么您可以使用SimpleDateFormat格式化字符串到目前为止。使用串联,您可以使用此格式“2012年11月25日”获取日期。请查看此链接以获取更多信息http://docs.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html