Создание пользовательской хронологии для произвольного DatePicker - PullRequest
0 голосов
/ 21 апреля 2019

У меня есть сценарий использования, где я хочу, чтобы пользователь мог указать свой собственный календарь в пользовательском интерфейсе.Чтобы учесть это, я хотел бы создать собственную хронологию, в которой указана вся информация о календаре.Причина, по которой я использую Chronology, а не пользовательский класс, заключается в том, что я хочу, чтобы это было совместимо со стандартными хронологиями.

Я рассмотрел реализацию Chronology или расширение AbstractChronoolgy, однако я не могу найти себя в этих классах, и мне не удалось найти ресурсы, относящиеся к этому сценарию использования.

Это то, что мне нужно, чтобы иметь возможность настраивать для каждой хронологии:

  • количество часов в дне
  • количество и названия дней в неделе (т. Е. Понедельник - воскресенье в григорианском календаре по 24 часа каждый)
  • количество дней в месяце иназвания месяцев (то есть январь - декабрь с 28-31 днями по григорианскому календарю)
  • количество месяцев в году
  • количество лет в следующем большем масштабе (100 для веков)в григорианском календаре, пропуская десятилетия)
  • какие эпохи существуют, и когда они начались (до н.э. и объявление в год 0 для григорианского календаря)

Возможно ли этоЭто хронология Java?Если да, то как мне подойти к этому?Любые советы или ссылки будут оценены.Мне не нужна полная реализация настраиваемости, достаточно лишь подсказки, где я могу установить эти вещи для настраиваемого календаря / хронологии.

Спасибо в Advance Folling

1 Ответ

1 голос
/ 23 апреля 2019

Не совсем. Chronology предназначен для представления существующих календарных систем, отличных от ISO / Gregorian. Он присваивает дату системе недели, месяца, года, эпохи. Это не распространяется на время в течение дня. Как таковой, он не предлагает вам возможность предоставить альтернативное количество часов в день. (Однако вы могли бы реализовать интерфейс TemporalUnit для представления «вашего часа» в виде доли дня.)

Чтобы реализовать Chronology, начните с расширения AbstractChronology. Возможно, вам потребуется реализовать интерфейс ChronoLocalDate, ChronoLocalDateTime, Era и т. Д. Наконец, вы должны зарегистрировать свою реализацию с ServiceLoader; см. API документацию по хронологии .

...