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”
答案 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