意外的java SimpleDateFormat解析exception
我无法理解为什么这几行
Date submissionT; SimpleDateFormat tempDate = new SimpleDateFormat("EEE MMM d HH:mm:ss z yyyy"); public time_print(String time) { try { submissionT=tempDate.parse(time); } catch (Exception e) { System.out.println(e.toString() + ", " + time); } }
导致exception并打印出来
java.text.ParseException: Unparseable date: "Tue Mar 31 06:09:00 CEST 2009", Tue Mar 31 06:09:00 CEST 2009
…虽然“不可解决的”时间符合我传递给SimpleDateFormat()的格式字符串..任何想法?
这是一个Locale问题。 使用:
sdf = SimpleDateFormat("EEE MMM d HH:mm:ss z yyyy", Locale.US);
适合我。
public class Main { public static void main(String[] args) { time_print("Tue Mar 31 06:09:00 CEST 2009"); } static Date submissionT; static SimpleDateFormat tempDate = new SimpleDateFormat("EEE MMM d HH:mm:ss z yyyy"); public static void time_print(String time) { try { submissionT=tempDate.parse(time); System.out.println(submissionT); } catch (Exception e) { System.out.println(e.toString() + ", " + time); } }
}
格式中的“z”表示TimeZone,Java仅识别某些时区ID。 您可以将TimeZone类中的列表作为字符串数组获取。 CEST没有出现在我刚刚从JDK 1.5生成的列表中
String[] aZones = TimeZone.getAvailableIDs(); for (int i = 0; i < aZones.length; i++) { String string = aZones[i]; System.out.println(string); }
希望这可以帮助。