SimpleDateFormat 日期和时间模式

SimpleDateFormat date and time pattern

9 PM CST 14 NOV 16 或 9:30 PM CST 14 NOV 16

如果我的字符串是上面的日期和时间,我可以用于 SimpleDateFormat 的日期和时间模式应该是什么?如果时间只能是 9 或 9:30.

,我不确定模式应该是什么

这是正确的吗?

SimpleDateFormat sdf = new SimpleDateFormat("h:m aaa z d MMM yy");

我试过测试上面的代码。对于示例日期 9:30 PM CST 14 NOV 16,它正在运行。但是对于 16 年 11 月 14 日 CST 晚上 9 点,它抛出一个异常:

java.text.ParseException: Unparseable date: "9 PM CST 14 NOV 16"

您可以编写一个尝试多种日期格式模式的方法:

public static Date parseDate(String dateToParse) {
    String[] dateFormats = {"h aaa z d MMM yy", "h:m aaa z d MMM yy"};

    for (String dateFormat : dateFormats) {
        try {
            return new SimpleDateFormat(dateFormat).parse(dateToParse);
        }
        catch (ParseException e) {

        }
    }
    return null;
}

然后

Date date1 = parseDate("9 PM CST 14 NOV 16");
System.out.println(date1);
Date date2 = parseDate("9:30 PM CST 14 NOV 16");
System.out.println(date2);

产出

Mon Nov 14 22:00:00 EST 2016
Mon Nov 14 22:30:00 EST 2016