【问题标题】:Convert String to Date not working properly [duplicate]将字符串转换为日期无法正常工作[重复]
【发布时间】:2015-08-14 09:43:39
【问题描述】:

我通过 ajax 以字符串格式获取日期。但是当我通过 SimpleDateFormat 将其转换为日期时,它会发生变化。月份总是改为一月。我只担心月份的变化。我的代码如下

String appointmentDate = request.getParameter("appointmentDate");
System.out.println(" appointment date in String format "+appointmentDate);

在这里我得到了正确的日期(2015 年 12 月 16 日)。但是当我将其更改为日期格式时,它正在发生变化(Fri Jan 16 00:12:00 IST 2015)。无论我输入什么月份,比如八月、五月、六月,我总是得到一月。

SimpleDateFormat dateFormat = new SimpleDateFormat("dd/mm/yyyy");
Date parsedDate = dateFormat.parse(appointmentDate);
System.out.println(" appointment date in DATE format "+parsedDate);

请帮帮我。提前致谢。

【问题讨论】:

  • “但是当我将其更改为日期格式时,它正在发生变化(2015 年 1 月 16 日星期五 00:12:00 IST)。”您似乎认为 java.util.Date 具有格式。它没有。如果您想以特定方式对其进行格式化,请使用DateFormat.format
  • @Jon Skeet 感谢您提供宝贵的信息。 DateFormat.format 的返回类型是 String,但我希望它是 Date 类型。
  • 那么您已经将它作为日期,但是您抱怨 formatting (“但是当我将其更改为日期格式时,它正在发生变化(周五16 00:12:00 IST 2015)") 这意味着您在抱怨 string 表示。或者你只是担心月份的变化?我重新打开了这个问题,但如果您编辑问题以明确问题,这将有所帮助。
  • 是的,你是对的。我只担心月份的变化。但是现在问题已经解决了。我输入了 'dd/mm/yyyy' 而不是 'dd/MM/yyyy'。

标签: java date spring-mvc simpledateformat java.util.date


【解决方案1】:

根据JavaDoc,小写m 表示分钟,而不是月。

将您的表达式更改为 dd/MM/yyyy 应该可以解决问题。

【讨论】:

  • 非常感谢。我得到了答案。我不知道我怎么会犯这个愚蠢的错误。
  • @abhishek 您可以通过复制工作代码示例(来自 StackOverflow 或 Tutorial)来避免此类错误,将其与问题代码一起运行以进行验证。然后将其与您的代码进行比较,调整以匹配,直到发现问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-21
  • 1970-01-01
  • 1970-01-01
  • 2013-12-02
  • 2018-11-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多