問題描述
格式為“07‑apr‑2016”的 Java 日期字符串在轉換為 sqldate 時會產生錯誤的結果 (A Java date string in the format "07‑apr‑2016" produces wrong result when converted to sqldate)
SimpleDateFormat formatter1;
formatter1 = new SimpleDateFormat("dd‑MMM‑YYYY");
java.util.Date dt = formatter1.parse(t5.getText());
java.sql.Date sqlDate = new java.sql.Date(dt.getTime());
JOptionPane.showMessageDialog(null,cid);
JOptionPane.showMessageDialog(null,bid);
JOptionPane.showMessageDialog(null,t1.getText());
JOptionPane.showMessageDialog(null,""+sqlDate);
我在打印 sqlDate 時得到不同的日期。當我輸入 07‑apr‑2016 時,我在 sqldate 中得到的值為 2015‑12‑27。
參考解法
方法 1:
Your pattern is incorrect, the right one is dd‑MMM‑yyyy
not dd‑MMM‑YYYY
方法 2:
As per oracle docs,Y means week year,y means year
change your code formatter1 = new SimpleDateFormat("dd‑MMM‑YYYY");
to formatter1 = new SimpleDateFormat("dd‑MMM‑yyyy");
(by lin、Nicolas Filotto、SpringLearner)