3

我将我的 2 个 Java 日期类型存储为 MySQL 数据库表的日期和时间。我正在使用 将SimepleDateFormat("YYYY-MM-dd")日期存储在我的数据库中,当我选择它时它显示为正确的日期。但是,当我尝试将其解析回 util.Date 并创建一个新的事件对象时,它显示为30/12/2012而不是31/05/2013在数据库中。解析为 util.Date 并格式化后的时间会正确打印出来。我不确定为什么 Date 打印了错误的日期,但 time 打印了正确的时间。

数据库

+--------+--------------+-----------+
+ 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
4

5 回答 5

4

它应该是yyyy-MM-dd小写的 Ys。请参阅此处了解大写 Y 的含义...

Y 返回 2012 而 y 在 SimpleDateFormat 中返回 2011

于 2013-05-31T09:56:00.517 回答
1

你的模式是错误的。(mm != MM, yyyy != YYYY ...)

看看http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

于 2013-05-31T09:58:06.400 回答
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);

顺便说一句,最好让您的日期对象独立于您要用来显示它的格式。

于 2013-05-31T09:55:02.853 回答
0

尝试

String testDate = "2007-11-02T14:46:03";
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
Date date = formatter.parse(testDate);

但更好的存储在数据库中的方法是使用时间戳而不是单独存储日期和时间

于 2013-05-31T10:00:38.287 回答
-1

尝试这个...

SimpleDateFormat dateFormat = new SimpleDateFormat("YYYY-MM-dd");   
Date date =  dateFormat.parse(rs.getDate(2).toString());
于 2013-05-31T10:04:53.723 回答