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

标签 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);

最佳答案

如您所见,解析有时会起作用

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/

相关文章:

java - RepositoryItemReader 找不到带参数的方法

java - 制作对象转换器的最佳实践

javascript - Javascript 中包含非数字字符的字符串的数字数组

c# - 我应该为 hh :mm tt in SQL Server 保存什么数据类型

mysql - 为什么该查询每次都返回 1?

java - 使用 SimpleDateFormat 将字符串转换为日期

java - java中的简单日期格式化程序问题

java - 如何处理大量的if-else语句?

java - 如何使用 recyclerview 处理评级栏

java 到 mysql。我需要从字符串参数转换为时间戳