Ако искате да анализирате низ от дата като "2015-10-01"
и "2015-9-5"
до LocalDateTime
обекти, можете да създадете свой собствен DateTimeFormatter
с помощта на DateTimeFormatterBuilder
:
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.appendPattern("yyyy")
.appendLiteral('-')
.appendValue(MONTH_OF_YEAR)
.appendLiteral('-')
.appendValue(DAY_OF_MONTH)
.parseDefaulting(HOUR_OF_DAY, HOUR_OF_DAY.range().getMinimum())
.parseDefaulting(MINUTE_OF_HOUR, MINUTE_OF_HOUR.range().getMinimum())
.parseDefaulting(SECOND_OF_MINUTE, SECOND_OF_MINUTE.range().getMinimum())
.parseDefaulting(NANO_OF_SECOND, NANO_OF_SECOND.range().getMinimum())
.toFormatter();
System.out.println(LocalDateTime.parse("2015-9-5", formatter));
System.out.println(LocalDateTime.parse("2015-10-01", formatter));
Променливата дължина на всяко поле се обработва от извикването на appendValue(field)
. Цитирайки Javadoc:
Анализаторът за стойност с променлива ширина като тази обикновено се държи алчно, изисквайки една цифра, но приема възможно най-много цифри.
Това означава, че ще може да анализира месеца и дните, форматирани с 1 или 2 цифри.
За да конструираме LocalDateTime
, ние също трябва да предоставим LocalTime
на този строител. Това се прави с помощта на parseDefaulting(field, value)
за всяко поле на LocalTime
. Този метод приема поле и стойност по подразбиране за това поле, ако не присъства в низа за анализ. Тъй като в нашия случай информацията за времето няма да присъства в низа, ще бъдат избрани стойностите по подразбиране, т.е. минималната стойност за диапазона от валидни стойности за това поле (тя се получава чрез извикване на getMinimum
към ValueRange
от това поле; може би бихме могли също да кодираме твърдо 0 тук ).
В случай, че низът за анализ може да съдържа информация за времето, можем да използваме незадължителни секции на DateTimeFormatter
, като това:
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.appendPattern("yyyy")
.appendLiteral('-')
.appendValue(MONTH_OF_YEAR)
.appendLiteral('-')
.appendValue(DAY_OF_MONTH)
.appendPattern("[ HH:mm]") // optional sections are surrounded by []
.parseDefaulting(HOUR_OF_DAY, HOUR_OF_DAY.range().getMinimum())
.parseDefaulting(MINUTE_OF_HOUR, MINUTE_OF_HOUR.range().getMinimum())
.parseDefaulting(SECOND_OF_MINUTE, SECOND_OF_MINUTE.range().getMinimum())
.parseDefaulting(NANO_OF_SECOND, NANO_OF_SECOND.range().getMinimum())
.toFormatter();
System.out.println(LocalDateTime.parse("2015-9-5", formatter));
System.out.println(LocalDateTime.parse("2015-10-01", formatter));
System.out.println(LocalDateTime.parse("2015-1-1 10:10", formatter));
person
Tunaki
schedule
06.10.2015