SimpleDateFormat返回错误的一天

时间:2013-10-29 04:45:41

标签: java date datetime

我正在尝试将日期从2009年5月15日下午19:24:11 MDT转换为20090515192411。 但是当我尝试下面的代码时,readformat本身将输入视为5月16日而不是5月15日

这是我的代码。

    String dateInString = "May 15, 2009 19:24:11 PM MDT";

    DateFormat readFormat = new SimpleDateFormat( "MMM dd, yyyy hh:mm:ss a z");
    DateFormat writeFormat = new SimpleDateFormat("yyyyMMddHHmmss");

    Date date = null;
    try {
        date = readFormat.parse(dateInString);
    }
    catch(ParseException e) {
        e.printStackTrace();
    }

    System.out.println(date); // Prints May 16, 2009 07:24:11 AM MDT

    String formattedDate = "";
    if( date != null ) {
        formattedDate = writeFormat.format(date);
    }

    System.out.println(formattedDate); // Prints 20090516072411

感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

String dateInString = "May 15, 2009 19:24:11 PM MDT";

无效,时间可以是24小时格式,也可以是AM / PM

答案 1 :(得分:3)

您需要HH而非hh才能以24小时格式阅读时间。 Java的“宽容日期”正在这里 - 晚上19:24 pm将在晚上11点24分之后的8小时进行解析。