我想尝试在java-11上解析如此简单的日期。
日期语言为:希伯来语日期格式为:“mmm yyyy dd”,示例日期为:“18אוק2010”
我的代码如下所示:
DateTimeFormatter f = DateTimeFormat.forPattern("MMM YYYY dd")
.withLocale(Locale.forLanguageTag("iw-IL"));
String dateInString = "18 אוק 2010";
Date d = f.parseDateTime(dateInString).toDate();
System.out.println(d);
但当我尝试时,会出现如下错误:
Exception in thread "main" java.lang.IllegalArgumentException: Invalid format: "18 אוק 2010" is malformed at "אוק 2010"
at org.joda.time.format.DateTimeFormatter.parseDateTime(DateTimeFormatter.java:945)
有什么建议吗?
1条答案
按热度按时间fzsnzjdm1#
阅读方向
您的格式模式字符串,
MMM YYYY dd
,表示月份缩写首先出现,然后是年份,然后是月份的第几天。从外观上看不出来,但当我复制粘贴你的日期字符串时,18 אוק 2010
,然后是月日(18),然后是月缩写(10月),最后是年份(2010年)。因为希伯来语是从右向左读的,其余的是从左向右读的,所以这两种情况下的字符串看起来都一样。由于幕后的顺序确实不一致,解析失败。因此,解决方案有两个(至少):
修复日期字符串以匹配格式模式。
修复格式模式以匹配日期字符串:
在后一种情况下,代码的输出是(在我的时区中):
2010年10月18日星期一00:00:00 cest