I`m пытаются построить форматировщик в JodaTime разобрать Период из строк, подобные этим:DateTime период с опциональными месяцев
- год 1час 90мин
- 1Year -60days 800min
- 1год + 1months -1days + 1час -30min
Я знаю, что я могу построить синтаксический анализатор с PeriodFormatterBuilder в jodatime, но с ним я не могу разобрать первые два примера
PeriodFormatter formatter = new PeriodFormatterBuilder()
.appendYears().appendSuffix("year", "years").appendSeparatorIfFieldsAfter(" ")
.appendMonths().appendSuffix("month", "months").appendSeparatorIfFieldsAfter(" ")
.appendDays().appendSuffix("day", "days").appendSeparatorIfFieldsAfter(" ")
.appendHours().appendSuffix("hour", "hours").appendSeparatorIfFieldsAfter(" ")
.appendMinutes().appendSuffix("min", "mins").appendSeparatorIfFieldsAfter(" ")
.appendSeconds().appendSuffix("sec", "secs")
.toFormatter();
Есть ли какой-либо способ, которым я могу рассказать, что поля тоза не являются обязательными?
Почему у вас есть смешанные знаки на вашем входе? Мне просто интересно. В строгом смысле это не одна продолжительность (период), а последовательность длительностей. Например: 1 месяц - 30 дней в будущем или в прошлом ??? Очень странно. - О вашем самом вопросе: Joda-Time не имеет понятия дополнительных секций в периодах синтаксического анализа (только секунды с дополнительными миллисами, не более). Может быть, специализированный 'PeriodParser' помогает, но я бы рекомендовал сначала применить токенизатор (проще). –
Помогло ли решение PeriodParser решить проблему? –