错误地将String转换为日期格式

我试图将字符串格式化为特定的日期格式,但转换中存在一些问题。 在转换后的字符串月总是“1月”。 以下是代码段:

String date = "30/10/2012-11:11:11"; DateFormat dateForm = new SimpleDateFormat("dd/mm/yyyy-hh:mm:ss"); try { System.out.println(dateForm.parse(date)); } catch (ParseException e) { e.printStackTrace(); } 

我无法理解这背后的原因。 请建议。

正如其他人所说,你应该使用MM几个月 – 我强烈怀疑你总是想用HH几个小时,而不是hh HH是24小时制; hh是12小时制,通常与AM / PM指示符一起使用。

最后,您应该考虑您希望SimpleDateFormat使用的时区和区域设置。 即使在没有任何月份或日期名称的情况下,我仍然会明确指定语言环境,以明确表示您并未尝试使用任何本地化数据。

 SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy-HH:mm:ss", Locale.US); // TODO: Set the time zone appropriately 

使用MM而不是mm作为格式字符串的日期部分。 mm是几分钟,而不是几个月。

参考: http : //docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

请使用"dd/MM/yyyy-hh:mm:ss"