我将2个Java日期类型存储为MySQL数据库表的日期和时间。我使用SimepleDateFormat("YYYY-MM-dd")
将日期存储在我的数据库中,当我选择它时,它显示为正确的日期。但是,当我尝试将其解析回util.Date并创建一个新的Event对象时,它显示为30/12/2012
而不是31/05/2013
,因为它在数据库中。解析为util.Date并格式化的时间正确打印出来的时间。我不确定为什么日期打印错误的日期,但是时间正在打印正确的时间。
数据库
+--------+--------------+-----------+
+ EVENT1 + 2013-05-31 + 02:30:00 +
+--------+--------------+-----------+
+ EVENT2 + 2013-05-31 + 01:00:00 +
+--------+--------------+-----------+
打印:
Event1
30/12/2012
02:30
Event2
30/12/2012
01:00
答案 0 :(得分:4)
{Y}应为yyyy-MM-dd
。在这里看看资本Y的含义......
答案 1 :(得分:1)
你的模式错了。 (mm!= MM,yyyy!= YYYY ......)
查看http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
答案 2 :(得分:0)
正确的方法是rs.getDate(int)
。看一眼
http://docs.oracle.com/javase/6/docs/api/java/sql/ResultSet.html#getDate(int)
使用该方法,您会获得java.sql.Date
,如果您想将其转换为java.util.Date
,请查看此Converting java.sql.Date to java.util.Date
你甚至可以这样做
Date date = rs.getTimestamp(2);
顺便说一下,最好让你的日期对象独立于你想用来显示它的格式。
答案 3 :(得分:0)
试
String testDate = "2007-11-02T14:46:03";
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
Date date = formatter.parse(testDate);
但更好的存储方式是使用时间戳而不是分别存储日期和时间
答案 4 :(得分:-1)
试试这个......
SimpleDateFormat dateFormat = new SimpleDateFormat("YYYY-MM-dd");
Date date = dateFormat.parse(rs.getDate(2).toString());