Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Установить формат продолжительности/периода времени joda по умолчанию в Grails

Автор вопроса: ubiquibaconОтветов: 1

При использовании времени joda с Grails можно установить значение по умолчанию LocalDate, как они сделали здесь. Я хочу сделать то же самое с Duration и Period, поэтому мне не нужно что-то вводить подобно

durationFormatter.print(exampleObject.myDuration)

каждый раз, когда я хочу отобразить продолжительность или период. Я хочу вызвать метод toString() объекта Duration/Period и распечатать его в нужном формате.

Я попытался реализовать PeriodFormatter в моем файле конфигурации почти так же, как они сделали здесь, но безрезультатно. Вот что у меня есть в моем файле конфигурации:

jodatime {
    format.org.joda.time.LocalDate = "yyyy-MM-dd"
    format.org.joda.time.PeriodFormatter = { new format.org.joda.time.PeriodFormatterBuilder()
        .appendMonths()
        .appendSuffix( " month", " months" )
        .appendWeeks()
        .appendSuffix( " week", " weeks" )
        .appendDays()
        .appendSuffix( " day", " days" )
        .appendHours()
        .appendSuffix( " hour", " hours" )
        .toFormatter();
    }
}
  • У меня были проблемы с форматированием по умолчанию, но потом я обнаружил, что он применяется только к тегу <joda:format>, предоставляемому плагином Joda-Time Grails. См. gpc.github.io/grails-joda-time/ref /Теги/format.html. Charles Wood 25.07.2013

grailsjodatime

Ответы

Ответ 1 · Ilya

сорт

ISOPeriodFormat

поле

cStandard

это средство форматирования периода по умолчанию. Это поле private static и не имеет сеттера. Но вы можете изменить это значение с помощью API java-reflection.

  final Field f = ISOPeriodFormat.class.getDeclaredField("cStandard");
  f.setAccessible(true);
  f.set(null, yourPeriodFormatter);

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы