Joda-Time путаница для преобразования DateTimeField в текст / строку
У меня есть Joda
DateTimeField
объект называется startTime
который является LocalTime
, Это означает, что он содержит час (в диапазоне 0-23), минуту (0-59) и секунду (0-59).
Теперь, когда я вызываю метод:startTime.getChronology().hourOfDay().getAsShortText(int fieldValue, Locale l)
Я немного запутался; Locale
Я понимаю, но когда я смотрю вверх DateTimeField
API здесь на самом деле нет никакого объяснения того, что я должен вводить для fieldValue.
Есть ли документ, описывающий, какие целые числа относятся к какому fieldValue?
Сейчас; Я уже пытался просто делать startTime.getChronology().hourOfDay().toString()
который не работает. он просто возвращает этот текст: DateTimeField[hourOfDay]
,
1 ответ
После ссылки на документацию, которую вы сами дали, аргумент fieldValue
просто описывается как числовое значение соответствующего поля. В вашем случае это значение часа дня, следовательно, любое число от 0 до 23.
Насколько я знаю, метод getAsShortText(...)
на самом деле не будет выдавать текст для часа дня, а просто выдаст цифры в строковой форме. Этот метод скорее предназначен для полей, которые действительно имеют специальную текстовую форму, например, месяцы или дни недели. Пример, демонстрирующий тривиальность вашего подхода (код не имеет смысла для любого варианта использования):
LocalTime time = new LocalTime(14, 45, 30);
String text = time.getChronology().hourOfDay().getAsShortText(12, Locale.FRENCH);
System.out.println("Hour-of-day 12 as text: " + text);
// output: Hour-of-day 12 as text: 12
Может быть, вы запутались, потому что у вас есть полевые константы в JDK-классе java.util.Calendar
в виду, но там константы поля обозначают идентификаторы поля, а не значения поля. Та же функция (а именно определение полей) достигается DateTimeField
-объекты в Йода-Тайм.