我已经阅读了很多过去的帖子,看起来我正在做的一切正确,但是由于某种原因,日历正在解析字符串错误。基本上我是在输入日期并将其解析为日历日期。 println语句是为了进行错误测试。
SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-YYYY");
Calendar wholeDate = new GregorianCalendar();
System.out.println(txtMmddyyyy.getText());
System.out.println(wholeDate.MONTH + " " + wholeDate.DAY_OF_MONTH + " " + wholeDate.YEAR);
try {
wholeDate.setTime(sdf.parse(txtMmddyyyy.getText()));
} catch (ParseException e3) {
System.out.println("Failure");
e3.printStackTrace();
}
System.out.println(wholeDate.MONTH + " " + wholeDate.DAY_OF_MONTH + " " + wholeDate.YEAR);
当我输入“05-15-2017”
时- 第一个print语句返回“05-15-17”
- 第二个打印语句返回“2 5 1”
- 第三个打印语句返回“2 5 1”
我很困惑,我想知道是否有人知道可能会发生什么。感谢。
答案 0 :(得分:2)
MONTH
,DAY_OF_MONTH
和YEAR
是常量,它们不反映Calendar
的状态,但为您提供了与其互动的方法。我强烈建议您花点时间阅读JavaDocs以更好地了解这些字段的用途以及如何使用它们。
但是,鉴于Calendar
被有效弃用,我强烈建议您花时间,而不是投资学习更新的日期/时间类 - 有关详情,请参阅Date and Time Classes < / p>
答案 1 :(得分:0)
由于日历月份从0开始,您将获得上个月
SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy");
Calendar wholeDate = new GregorianCalendar();
System.out.println(txtMmddyyyy.getText());
System.out.println(wholeDate.get(Calendar.MONTH) + " " + wholeDate.get(Calendar.DAY_OF_MONTH) + " " + wholeDate.get(Calendar.YEAR));
try {
wholeDate.setTime(sdf.parse(txtMmddyyyy.getText()));
} catch (ParseException e3) {
System.out.println("Failure");
e3.printStackTrace();
}
System.out.println(wholeDate.get(Calendar.MONTH) + " " + wholeDate.get(Calendar.DAY_OF_MONTH) + " " + wholeDate.get(Calendar.YEAR));