我通过正则表达式从一个大文档中提取日期,并想将它们保存到 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);
最佳答案
如您所见,解析有时会起作用
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, 13 Dec 2005 (UTC)"是 December(英语)还是 Dezember(德语)
... new SimpleDateFormat("HH:mm, dd MMM yyyy (zzz)", Locale.EN);
当我看到代码在哪里工作或不工作时,我可以推断,您的 java 正在德国本地化环境中运行。因此 2005 年 1 月 13 日 可以是:
2005 年 1 月 13 日(英语语言环境)或 2005 年 1 月 13 日(德语语言环境),这两种情况巧合地以相同的字符序列开始....
December/Dezember 情况并非如此
关于java - 将字符串转换为日期的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42720752/