ТЛ; др
LocalDate.of( year , month , dayOfMonth ) // Catch exception `DateTimeParseException`
java.time
Современный подход использует классы java.time, а не проблемный старый класс GregorianCalendar
.
Класс java.time.LocalDate
представляет значение только для даты без времени суток и без часового пояса.
Чтобы проверить ваши входные данные, попробуйте собрать LocalDate
из чисел. В отличие от GregorianCalendar
, LocalDate
имеет вменяемую нумерацию месяцев, 1-12 за январь-декабрь. Если числа приводят к неправильной дате, выдается DateTimeParseException
, чтобы вы могли поймать.
try {
LocalDate ld = LocalDate.of( year , month , dayOfMonth ) ;
return true ; // true = Valid data entered for a date.
} catch ( DateTimeParseException e ) {
return false; // Exception caught, meaning invalid data-entry.
}
О java.time
Инфраструктура java.time встроена в Java 8 и более поздние версии. Эти классы вытесняют проблемные старые устаревшие классы даты и времени, такие как java.util.Date
, Calendar
, & SimpleDateFormat
.
Проект Joda-Time , который теперь находится в режиме обслуживания , рекомендует перейти на классы java.time .
Чтобы узнать больше, см. Oracle Tutorial . И поиск переполнения стека для многих примеров и объяснений. Спецификация JSR 310 .
Где получить классы java.time?
Проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является полигоном для возможных будущих дополнений к java.time. Здесь вы можете найти несколько полезных классов, таких как Interval
, YearWeek
, YearQuarter
и more .