我编写了以下代码来解析像“09-MAR-17”这样的简单日期:
DateFormat df = new SimpleDateFormat("dd-MMM-yy");
Date start = null;
Date end = null;
try {
start = df.parse(data.get(i)[Columns.PACKAGESTART.ordinal()]);
end = df.parse(data.get(i)[Columns.PACKAGEEND.ordinal()]);
} catch (ParseException ex) {
ex.printStackTrace();
}
然而,这会引发以下异常:
java.text.ParseException: Unparseable date: "07-MAR-17"
at java.text.DateFormat.parse(DateFormat.java:357)
然而我不知道为什么。 “dd-MMM-yy”是不正确的格式吗?
编辑:在netbeans中运行它会给我一个例外,在eclipse中运行完全相同的代码似乎有效。答案 0 :(得分:2)
我对此进行了一些实验,发现解析依赖于语言环境。例如," 07-MAY-17"将使用英语语言环境,但不适用于瑞典语语言环境(5月份命名为#34; maj")。我怀疑会发生类似事情。
答案 1 :(得分:1)
您需要对代码进行以下扩展才能解析字符串“MAR”(英语!):
DateFormat df = new SimpleDateFormat("dd-MMM-yy", Locale.US);
由于@SmallHacker认为解析时存在本地化问题。