如果有人感兴趣…我发现了一个解决方法:
- 创建一个新类,例如
IslamicChronologyWithNames
,它委托IslamicChronology
包 org.joda.time.DateTimeZone中 的实例。 __ - 修改一种方法;
assemble(Fields fields)
:调用委托的方法,然后将fields.monthOfYear(可能还有dayOfWeek)设置为您自己的BasicMonthOfYearDateTimeField
- 然后,
BasicMonthOfYearDateTimeField
can 的子类可以在属性文件名称中查找月份名称(如果是DayOfWeek,则为天)。子类必须位于 org.joda.time.chrono 包中才能进行扩展BasicMonthOfYearDateTimeField
。
仍然存在一个问题,即Joda time似乎在调用子类的方法之前先验证要解析的日期
getAsText(int fieldValue, Localelocale),因为并且它不知道类返回的月份名称,验证失败,因此从不调用方法。我的解决方法是在此类中使用静态方法,该方法将带有伊斯兰月份名称的日期转换为带有格里高里英语月份名称的日期作为字符串。因此,在调用之前
parseDateTime(),先调用静态方法,然后日期字符串通过验证。然后,不要在
convertText()方法中处理伊斯兰月份的名称,而是在子类中使用默认的gregorian实现:
protected int convertText(String text, Locale locale){ return GJLocaleSymbols.forLocale(locale).monthOfYearTextToValue(text);}那应该工作!希望对遇到相同问题的任何人都有意义。



