2014-09-27 3 views
2

Я разрабатываю приложение java, в котором мне нужно получить дату и количество дней от пользователя, а затем добавить эти цифры в дату и показать конечная дата, которая в этом случае была бы датой окончания срока, пользователю. Проблема в том, что я использую shamsi (jalali) calendar, и для того, чтобы рассчитать, сначала мне нужно преобразовать дату shamsi в java standar calendar, а затем добавить числа дня и снова преобразовать их обратно в shamsi date.Как добавить количество дней к дате в календаре jalali (shamsi)

Date miladiDate = new Date(DateConvertor.shamsi2miladi(entity.getDoDate())); 

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); 
Calendar c = Calendar.getInstance(); 
c.setTime(miladiDate); 
c.add(Calendar.DATE, baseEvaluate.getDeadLineDays()); 
String output = sdf.format(c.getTime()); 
System.out.println(output); 
entityDetail.setDeadLineDate(DateConvertor.miladi2date(c.getTime())); 

Я хотел бы знать, если есть способ, в котором я мог бы сделать это без преобразования даты Шамси, а просто добавить номер дня до даты Шамси. P.S: Я использовал время joda, оно не поддерживает календарь shamsi.

+0

Я думаю, что вы нашли лучший способ относительно текущей отсутствующей поддержки библиотек для календаря Шамси в Java. –

+0

Мой предыдущий комментарий устарел. Тем временем я реализовал календарь Jalali на Java - с поддержкой добавления дней и т. Д., См. Демонстрацию в моем другом [SO-post] (http://stackoverflow.com/a/33348458/2491410). Просто используйте Time4J вместо Time4A, по крайней мере, с модулями core + i18n + calendar. –

ответ

0

Вы можете использовать этот календарь Jalali доступен на GitHub и jcenter, который имеет встроенный метод расчета дат основаны на разнице дня:

https://github.com/razeghi71/JalaliCalendar

0

Это аналогичный вопрос, Is there any library or algorithm for Persian (Shamsi or Jalali) calendar in Android?, имеют this Answer, который обеспечивает исходный код за то, что он утверждает, что является точным солнечным календарем для перехода на персидскую (Шамси) дату.

Некоторые другие ответы там могут помочь.


Pardon мое невежество, как я ничего не знаю о персидских календарях, в частности, ... но я могу вам сказать, что можно подключить календарную систему в современную архитектуру даты и время в Java (java.time).

java.time

старых классов java.util.Date/.Calendar беспорядок, и его следует избегать. Они были заменены фреймом java.time, встроенным в Java 8 и более поздние версии.

подключи в реализации

Я предлагаю смотреть на, или даже сделать, а Jalali хронологию, которая может заткнуть в рамках java.time. Это будет реализация java.time.chrono.Chronology и, скорее всего, расширение java.time.chrono.AbstractChronology.

Ниже я перечисляю десять реализаций, потому что они все с открытым исходным кодом и могут помочь любому, кто пытается реализовать. И этот список показывает, что включение реализации в java.time оказалось практически осуществимым.

Рамка java.time в настоящее время включает в себя следующие календарные системы:

  • HijrahChronology
    Лунный календарь поддержка Islamic calendars.
  • IsoChronology
    Основано на стандарте ISO-8601, который является фактическим мировым календарем).
  • JapaneseChronology
    Японская Имперская система календаря.
  • MinguoChronology
    Система календаря Minguo, в основном используется на Тайване.
  • ThaiBuddhistChronology
    В основном используется в Таиланде.

Проект ThreeTen-Extra является расширением java.time. Он служит доказательством возможных будущих дополнений к java.time. Если у кого-то была версия с открытым исходным кодом хронологии Jalali, этот проект может ее принять.

В настоящее время ThreeTen-Extra включает в себя следующие календарные системы:

+0

«Завершение реализации в java.time оказалось практически осуществимым ...» hm, скорее нет. Для оценки качества дизайна недостаточно просто подсчитать предлагаемые календари. Подробности имеют значение, например, начало дня, отклоняющееся от полуночи, нет i18n для эфиопских и т. Д., Сломанный тайбуддист до 1941 года и так далее! Для вашей информации: общий доступный хронологический дизайн был выдвинут Oracle, против сопротивления С. Колбурна. Конечным результатом конфликта было усиление «ChronoLocalDate»-API с таким количеством предупреждений, что его javadoc читает. «Не используйте меня». –

+0

Вставные хронологии - это злой дизайн ИМХО, они не могут принимать во внимание странности и отклонения различных календарей, потому что они просто пытаются определить «стандартную» схему. См. Также [Colebournes self-critism about pluggable chronos] (http://blog.joda.org/2009/11/why-jsr-310-isn-joda-time_4941.html). Эта концепция была фактически восстановлена ​​в «java.time» Oracle - только в другой форме. –

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