Я использую YearQuarter из библиотеки ThreeTen-Extra для представления определенного квартала в течение данного года.
Я использую пользовательский формат, а неформат по умолчанию, например, «3Q2018» вместо «2018-Q3» для третьего квартала 2018. При анализе значения через YearQuarter.parse (text, formatter) мне нужны значения с ведущими нулями за кварталбыть отклоненным (через стандартное DateTimeParseException ).
Моя первая попытка была использовать DateTimeFormatter.ofPattern("Q'Q'yy")
.Тем не менее, это принимает строки с произвольным количеством ведущих нулей перед кварталом.Например, этот форматтер не отклоняет ни «02Q2007», ни «002Q2007».
Это похоже на то, как обрабатываются шаблоны с одним символом для других временных типов.Например, они успешно анализируются без ошибок:
YearMonth.parse("012-2018", DateTimeFormatter.ofPattern("M-yyyy"))
LocalTime.parse("001:00:01", DateTimeFormatter.ofPattern("H:mm:ss"))
LocalTime.parse("01:00:012", DateTimeFormatter.ofPattern("HH:mm:s"))
Однако они отклоняют ввод с помощью DateTimeParseException
:
YearMonth.parse("012-2018", DateTimeFormatter.ofPattern("MM-yyyy"))
LocalTime.parse("001:00:01", DateTimeFormatter.ofPattern("HH:mm:ss"))
LocalTime.parse("01:00:012", DateTimeFormatter.ofPattern("HH:mm:ss"))
Как я могу создать DateTimeFormatter проанализировать YearQuarter
в моем желаемом формате, отклоняя значения с более чем одной цифрой за квартал?В идеале я хотел бы сделать это в виде строки шаблона, поскольку людям легче читать и гораздо легче выводить текстовые свойства.