2

我正在尝试将日期从 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

我在这里先向您的帮助表示感谢。

4

2 回答 2

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

无效,时间可以是 24 小时格式,也可以是上午/下午

于 2013-10-29T04:49:11.393 回答
3

您需要HH而不是hh读取 24 小时格式的时间。Java 的“宽松日期”在这里为您服务 - 晚上 19​​:24 被解析为晚上 11:24 后的 8 小时。

于 2013-10-29T04:49:52.573 回答