SimpleDateFormat日期和时间模式

时间:2016-11-15 03:30:54

标签: java date simpledateformat

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");

我试过测试上面的代码。对于样品日期CST 14 NOV 16 9:30 PM,它正在工作。但是对于CST 14 NOV 16下午9点,这是一个例外:

  

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

1 个答案:

答案 0 :(得分:1)

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

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