首先我要说的是,我知道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而他们会怎么想
答案 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