给出以下代码
LocalDate localDateEpoch = LocalDate.parse(
"01-Jan-2017", DateTimeFormatter.ofPattern("d-MMM-yyyy", Locale.FRENCH));
System.out.println("localDateEpoch: " + localDateEpoch);
我选择法语的原因是 - 法语数字是拉丁数字,所以理论上它应该只是解释这一点(与“Jan”中的字母相同)。尽管如此,我还是收到了这个错误
Exception in thread "main" java.time.format.DateTimeParseException:
Text '01-Jan-2017' could not be parsed at index 3
French
和France
)?现在我已经做了一些研究。 似乎可以解决上面提到的缺乏语言的问题,你可以做
Locale.forLanguageTag("fa");
,但为什么不做Locale.Iran/Persian
。看到一篇文章提到如何在这种情况下将数值转换为波斯语,所以我尝试做相反的事情。
LocalDate localDateEpoch = LocalDate.parse(
"۰۱-Jan-۲۰۱۷", DateTimeFormatter.ofPattern("d-MMM-yyyy", Locale.forLanguageTag("fa")));
我再次遇到错误。
Exception in thread "main" java.time.format.DateTimeParseException:
Text '۰۱-Jan-۲۰۱۷' could not be parsed at index 0
如果你好奇的话,我在没有
MMM
的情况下尝试过,但仍然遇到同样的错误。
我只是要快速总结一下 @sotirios-delimanolis 和 @user85421 在评论中所说的内容。
Locale
类变量访问。但是您可以使用 Locale.forLanguageTag("fa")
绕过此限制(例如。localizedBy
作为数字字母。现在,至少在波斯语中,此对话是英语表示,而不是日历指定的月份名称。