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

时间:2012-12-04 07:40:58

标签: java date simpledateformat

我正在尝试将字符串格式化为特定的日期格式,但转换时存在一些问题。在转换后的字符串月总是“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();
    }

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

3 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

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