有谁能告诉我为什么日期定在下个月而不是本月?
即使我将dateFormatted变量设置为" 28/08/2014"它将日期设置为" 28/07 / 2014"。
我可以在本月简单地使用-1但是它会在1月份弄清楚日期。
还有其他方法我应该设定日期吗?
由于
UtilDateModel model;
JDatePanelImpl datePanel;
DatePickerImpl datePicker;
model = new UtilDateModel();
model.setDate(yearInt, monthInt, dayInt);
model.setSelected(true);
datePanel = new JDatePanelImpl(model);
datePicker = new JDatePickerImpl(datePanel);
// String dateFormatted = (String) result[1];
String dateFormatted = "28/08/2014";
System.out.println("Date Formatted : " + (String) result[1]);
int day = Integer.parseInt(dateFormatted.substring(0, 2)); // Correct
int month = Integer.parseInt(dateFormatted.substring(3, 5)); // Correct
int year = Integer.parseInt(dateFormatted.substring(6, 10)); // Correct
System.out.println(day);
System.out.println(month);
System.out.println(year);
model.setDate(year, month, day);
model.setSelected(true);
答案 0 :(得分:1)
您的日期解析错误,请使用SimpleDateFormat或类似的
您所看到的问题可能与某些字段基于0且某些字段基于1的事实有关。
<强>更新强>
日期不应存储为数据库中的字符串,而应使用可用的日期类型。
日期解析通常比您想象的要复杂得多。夏令时,闰年,语言,...都发挥作用。
最新的java迭代有一个基于joda时间(http://www.joda.org/joda-time/)的日期处理的完全重写,但是你也可以在java中使用“旧”的日期解析方式,这不是很糟糕,只是不同。
您应该查看SimpleDateFormat的javadoc,它会告诉您为什么需要小写“yyyy”和大写“MM”。格式化程序将为您提供一个日期,您可以使用日历探测所需的字段。
它会一直考虑有关日期处理的所有细节。
答案 1 :(得分:-1)
我不知道&#39; JDatePicker&#39;包,但经过一些研究,我发现this,请阅读本页第3条。它说月份数是0,所以januari应该是0(第1个月减去1)。