格式为“07-apr-2016”的 Java 日期字符串在转换为 sqldate 时会产生错误的结果

Posted

技术标签:

【中文标题】格式为“07-apr-2016”的 Java 日期字符串在转换为 sqldate 时会产生错误的结果【英文标题】:A Java date string in the format "07-apr-2016" produces wrong result when converted to sqldate 【发布时间】:2016-04-07 13:59:44 【问题描述】:
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】:

根据oracle docs,Y表示周年,y表示年

将您的代码 formatter1 = new SimpleDateFormat("dd-MMM-YYYY"); 更改为 formatter1 = new SimpleDateFormat("dd-MMM-yyyy");

【讨论】:

【参考方案2】:

你的模式不正确,正确的是dd-MMM-yyyy而不是dd-MMM-YYYY

【讨论】:

以上是关于格式为“07-apr-2016”的 Java 日期字符串在转换为 sqldate 时会产生错误的结果的主要内容,如果未能解决你的问题,请参考以下文章

将 Java 日期转换为 XML 日期格式(反之亦然)

日期格式校验java判断字符串是否为有效的日期格式

在java中将日期从一种格式转换为另一种格式[重复]

java字符串转换成日期

为啥java导出excel 日期格式不显示时分秒

如何将 Java 日期字符串/对象转换为 JFreeChart 日期格式?