首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MySQL中保存的日期无效

问在MySQL中保存的日期无效
EN

Stack Overflow用户
提问于 2014-10-05 06:24:11
回答 1查看 138关注 0票数 1

请看下面的代码

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

发布于 2014-10-05 06:27:34

如果您担心日期的格式,java.sql.Date toString()方法( println时调用的方法),始终将日期格式化为yyyy-mm-dd。

如果您想以更受控制的方式格式化您的日期,您可以在输出它时使用DateFormat。

然而,这里真正的问题(糟糕的数据)是,您使用的是小写m,它是“一小时一分钟”的格式字符,而不是“一年中的月份”。有关详细信息,请参阅SimpleDateFormat页面:

代码语言:javascript
复制
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"应该可以解决当前的问题。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26200178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档