将字符串转换为日期的问题
Problems converting strings to dates
我通过正则表达式从一个大文档中提取日期,并想将它们保存到 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, 2005 年 12 月 13 日 (UTC)" 是 December(英语)或 Dezember(德语)
... new SimpleDateFormat("HH:mm, dd MMM yyyy (zzz)", Locale.EN);
当我看到代码在哪里工作或不工作时,我可以推断,您的 java 在德语本地化环境中是 运行。因此 2005 年 1 月 13 日 可以是:
13 January 2005(英语语言环境)或 13 Januar 2005(德语语言环境),这两种情况巧合地以相同的字符序列开头....
December/Dezember
并非如此
我通过正则表达式从一个大文档中提取日期,并想将它们保存到 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, 2005 年 12 月 13 日 (UTC)" 是 December(英语)或 Dezember(德语)
... new SimpleDateFormat("HH:mm, dd MMM yyyy (zzz)", Locale.EN);
当我看到代码在哪里工作或不工作时,我可以推断,您的 java 在德语本地化环境中是 运行。因此 2005 年 1 月 13 日 可以是:
13 January 2005(英语语言环境)或 13 Januar 2005(德语语言环境),这两种情况巧合地以相同的字符序列开头....
December/Dezember
并非如此