我通过正则表达式从大文档中提取日期,并希望将它们保存到Java日期中。这适用于大多数日期,但不适用于12月的日期 我认为这与它的编写方式有关,因为当我从" Dec"对于" Dez",他们可以转换。
SimpleDateFormat dateFormat01 = new SimpleDateFormat("HH:mm, dd MMM yyyy (zzz)");
String s01 = "20:49, 13 Jan 2005 (UTC)"; //working
String s02 = "20:49, 13 Dez 2005 (UTC)"; //working
String s03 = "20:49, 13 Dec 2005 (UTC)"; //not working
Date d01 = dateFormat01.parse(s01);
Date d02 = dateFormat01.parse(s02);
Date d03 = dateFormat01.parse(s03);
答案 0 :(得分:4)
正如您所看到的,解析有时会起作用
String s01 = "20:49, 13 Jan 2005 (UTC)"; //working
String s02 = "20:49, 13 Dez 2005 (UTC)"; //working
String s03 = "20:49, 13 Dec 2005 (UTC)"; //not working
原因很简单,您需要在 SimpleDateFormat 中使用Locale,否则java将永远无法理解“20:49,2005年12月13日(UTC)”是12月(英语)或Dezember(德语)
... new SimpleDateFormat("HH:mm, dd MMM yyyy (zzz)", Locale.EN);
当我看到代码在哪里工作时,我可以推断,你的java是在德国本地化环境中运行的。因此 2005年1月13日可以是:
2005年1月13日(英语区域设置)或 2005年1月13日(德语区域设置),两个案例同时以相同的字符序列开头....
不是 12月/ Dezember
的情况