请看下面的代码
SimpleDateFormat format = new SimpleDateFormat("dd-mm-yyyy");
Date parse = format.parse("05-10-2014");
java.sql.Date sqlDate = new java.sql.Date(parse.getTime());输出“应该是”05-10-2014,但是我将输出作为2014-01-05。这里怎么了?
即使我将sqlDate保存在数据库中,它仍然被保存为2014-01-05。
更新
我把dd-mm-yyyy改成了dd-MM-yyyy。现在,mysql将其保存为2014-05-10
发布于 2014-10-05 06:27:34
如果您担心日期的格式,java.sql.Date toString()方法( println时调用的方法),始终将日期格式化为yyyy-mm-dd。
如果您想以更受控制的方式格式化您的日期,您可以在输出它时使用DateFormat。
然而,这里真正的问题(糟糕的数据)是,您使用的是小写m,它是“一小时一分钟”的格式字符,而不是“一年中的月份”。有关详细信息,请参阅SimpleDateFormat页面:
Letter Date or Time Component Presentation Examples
------ ---------------------- ------------ --------
M Month in year Month July; Jul; 07
m Minute in hour Number 30在上面的第二个链接中,对pards()的描述包含了以下小片段:
此解析操作使用日历生成日期。在解析之前,将清除日历的所有日期-时间字段,而日历的日期-时间字段的默认值用于任何缺失的日期-时间信息。
由于Calendar的默认值是1970年1月1日,而且您只设置日期、分钟和年份,所以假设UTC,您将在2014年1月5日(午夜10分钟后)结束。
将格式字符串更改为"dd-MM-yyyy"应该可以解决当前的问题。
https://stackoverflow.com/questions/26200178
复制相似问题