DatePicker设置月份错误

时间:2014-08-28 09:21:58

标签: java sql datepicker

有谁能告诉我为什么日期定在下个月而不是本月?

即使我将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);

2 个答案:

答案 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)。