将字符串转换为日期的问题

时间:2017-03-10 14:28:29

标签: java date simpledateformat string-parsing

我通过正则表达式从大文档中提取日期,并希望将它们保存到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);

1 个答案:

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

的情况