Если вы хотите использовать другую календарную систему (действительно трудно сказать, чем вы занимаетесь), тогда ICU4J Project - ваш друг.
Он содержит несколько различных календарных систем (см. Пакет com.ibm.icu.util ).
Чтобы использовать другую систему календаря, просто создайте экземпляр Calendar с допустимым значением ULocale , и все готово:
// valid for desktop applications, for web you'd do it differently
ULocale arabicLocale = new ULocale("ar_SA@calendar=islamic");
Calendar calendar = Calendar.getInstance(arabicLocale);
К сожалению, я могу помочь, но, похоже, вам придется назначать систему календаря через определенный идентификатор ULocale. Я не знаю, почему они не установили правильные значения по умолчанию ... Во всяком случае ...
ICU также предоставляет собственную реализацию DateFormat , а также TimeZone , и я боюсь, что это то, что вы должны использовать для форматирования Календаря. К счастью, их реализация принимает Calendar
, поэтому на самом деле проще в использовании:
TimeZone currentTimeZone = TimeZone.getDefault();
DateFormat formatter = DateFormat.getDateTimeInstance(
DateFormat.DEFAULT, DateFormat.DEFAULT, arabicLocale);
formatter.setTimeZone(currentTimeZone);
String formattedDateTime = formatter.format(calendar);