请查看以下代码
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
答案 0 :(得分:4)
如果您担心日期的格式,java.sql.Date
toString()
方法,println
时调用的方法,always会将日期格式化为是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日,并且您只设置了日,分和年,因此您最终将在2014年1月5日(午夜十分钟)结束,假设UTC。
将格式字符串更改为"dd-MM-yyyy"
应能解决当前问题。