【问题标题】:SimpleDateFormat changes the month in the date object [duplicate]SimpleDateFormat 更改日期对象中的月份 [重复]
【发布时间】:2017-03-22 12:20:15
【问题描述】:

我有一个datepicker,我在其中插入出生日期,例如"1994/03/26" 作为字符串。

在后端我想通过将我的字符串解析为日期对象来更改日期格式,然后像这样更改格式:

Date dateOfBirth1 = new SimpleDateFormat("yyyy/mm/dd").parse(client.getDateOfBirth());//1994/03/26
String dateOfBirth = new SimpleDateFormat("dd-MM-yy").format(dateOfBirth1);

问题是:dateOfBirth 将日期更改为26/01/94,而应该是26/03/94

为什么会这样?任何帮助表示赞赏

【问题讨论】:

  • 查看格式:您使用的是mmMM。如果您阅读文档,一个是几分钟,一个是几个月 - IIRC MM 是月份,所以您的第一种格式应该是 "yyyy/MM/dd"。您的格式将03 解释为分钟,因此假定月份为一月。
  • 我不确定,但可能是关于“mm”和“MM”的一些错误

标签: java date


【解决方案1】:

mm 是分钟,而不是月份,您的第一行格式为 yyyy/mm/dd。所以你真正解析的是年/分/日

正如您在第二行正确写的那样,您正在寻找的是月份的格式:MM。在您的情况下,正确的日期格式将是 yyyy/MM/dd。要获得预期的行为,请将您的代码更改为

Date dateOfBirth1 = new SimpleDateFormat("yyyy/MM/dd").parse(client.getDateOfBirth());//1994/03/26
String dateOfBirth = new SimpleDateFormat("dd-MM-yy").format(dateOfBirth1);

SimpleDateFormat Reference

【讨论】:

  • 谢谢先生! :)
【解决方案2】:

这个。是正确的,mm 和 MM 在 SimpleDateformat 中具有不同的含义......所以你正在改变你给 SimpleDateformat 对象

的模式中的分钟和月份信息
SimpleDateFormat("yyyy/mm/dd")

SimpleDateFormat("dd-MM-yy")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-10
    • 1970-01-01
    • 2018-05-15
    • 1970-01-01
    相关资源
    最近更新 更多