2014-08-28 67 views
-1

誰能告訴我爲什麼日期設置爲下個月而不是本月?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); 

回答

1

你做的日期解析錯誤,請使用SimpleDateFormat的或類似

,你看到的是可能涉及到的是,有些領域是從零開始的問題有些是基於1的。

UPDATE

日期不應該存儲在數據庫中的字符串,而不是使用可用的日期類型。

日期解析通常比您想象的要複雜得多。夏令時,閏年,語言......都會發揮作用。

最新的java迭代基於joda時間對日期處理進行了完全重寫(http://www.joda.org/joda-time/),但您也可以在java中使用日期解析的「舊」方式,這種方式並不差,只是不同。

你應該看看SimpleDateFormat的javadoc,它會告訴你爲什麼你需要小寫「yyyy」例如大寫「MM」。格式化程序會爲您提供日期,您可以使用日曆查看所需字段。

它一直在考慮所有關於日期處理的細節。

+0

好的謝謝,這與0索引數組合理。另外,當你說im解析它錯了,你可以給我一個快速的解釋或如何從字符串設置DatePicker的鏈接。例如,它以String「28/08/2014」的形式存儲在數據庫中。這是錯誤的方式來存儲日期在SQL?我們也在愛爾蘭使用不同的格式。它狡猾這就是爲什麼我不能使用SimpleDateFormat。我們使用DD/MM/YYYY。 – user237462 2014-08-28 09:32:05

+0

非常感謝。 – user237462 2014-08-28 09:49:30

-1

我不知道'JDatePicker'包,但經過一番研究後,我發現this,請閱讀本頁上的文章3。它說月份數是0,所以januari應該是0(第一個月減1)。

相關問題