2015-06-10 4 views
3

Я преобразовываю григорианские даты в исламские даты. Я устанавливаю свою модель високосного года в индийский високосный год, но он не работает.Joda api не возвращает правильную исламскую дату

Я делаю для петли и григорианской даты, которая занимает текущий месяц, и считается днем ​​и конвертирует ее в исламскую дату. What i want

Вот мой код

 for(int i=0;i<maxDay;i++) 
     { 
      eng.add(String.valueOf(i+1)); 
      DateTime dtISO=new DateTime(currentY,currentMonth+1,i+1,0,0); 
      DateTimeZone asia= DateTimeZone.forID("Asia/Riyadh"); 

      DateTime dtIslamic = dtISO.withChronology(
        IslamicChronology.getInstance(
           asia, 
           IslamicChronology.LEAP_YEAR_INDIAN)); 
      String islamicDateArr=""; 
      split=dtIslamic.toString().split("T"); 
      split=split[0].split("-"); 
      if(i==0 || Integer.parseInt(split[2])==1) 
      { 
       isl.add(String.valueOf(split[2]+" "+islamicMonths[Integer.parseInt(split[1])-1])); 
       continue; 
      } 
      isl.add(String.valueOf(split[2])); 
     } 
+0

Вы также пробовали использовать любой другой шаблон високосного года (Joda-Time предлагает 4)? Если ничего не работает, я получаю ощущение, что может быть ошибка, потому что эти шаблоны високосного года, наконец, будут отличаться на один день. –

+0

Да, я пробовал, но ничего не работает ... Есть ли какие-либо ошибки в моем коде? или есть какой-либо другой api, который работает для меня –

ответ

1

Ваш код кажется правильным.

Поскольку вы сказали мне, что я пробовал каждую из четырех лет викторины года Йода-времени без успеха, я получаю ощущение, что может быть ошибка или просто недостающая функция, потому что среди всех поддерживаемых моделей високосного года должно быть пара шаблонов, которые отличаются друг от друга на один день (и вы наблюдаете разницу в один день).

Другие люди уже представили проблемы с ошибкой. Смотрите здесь:

issue 163

issue 107

Как вы можете видеть, что это будет трудно для вас, чтобы убедить руководителя проекта, чтобы решить вашу проблему для вас. Возможно, он прав, когда говорит, что у Joda-Time нет ошибки, но она просто не завершена.

иметь в виде, что в соответствии с R.H. van Gent вычисленной исламской календарь алгоритм знает, по крайней мере 8 вместо 4 варианта, потому что есть 4 схемы вставочной и (для каждой схемы) две вариации в зависимости от точного начала исламистской эпохи (Четверг против пятничной эпохи). Поэтому Joda-Time просто не поддерживает все варианты.

Каковы альтернативы Joda-Time?

а) Java-8 и его backport Threeten-BP (для Java-6 + 7) поддерживают таблицы управляемой Umalqura-календарь Саудовской Аравии (прицельного основе). Я не уверен, что это решает вашу проблему (если нет, то вы можете предоставить рукописный файл, содержащий данные таблицы, относящиеся к вам, - много работы). Обратите внимание, что обе библиотеки не поддерживают исламовые календари на основе алгоритмов.

b) Некоторые люди написали свои собственные домашние решения. Я нашел это hijri converter через Google. Не знаю, работает ли это для вас.

c) IBM предлагает Hijri calendar в своем ICU-проекте. Он предлагает разные модели високосного года, чем Joda-Time. Может быть, это помогает.

Замечание: Как вы можете видеть, текущая поддержка Java для календарей Hijri на самом деле не удовлетворяет. Вот почему я решил создать новую реализацию в своей собственной библиотеке Time4J. Это запланировано на 2-3 месяца позже осенью 2015 года.

Смежные вопросы