Другие ответы верны, но устарели.
java.time
Инфраструктура java.time встроена в Java 8 и более поздние версии.Эти классы вытесняют старые проблемные классы даты и времени, такие как java.util.Date
, .Calendar
и & java.text.SimpleDateFormat
.
Теперь в режиме обслуживания , проект Joda-Time также рекомендует перейти на java.time.
Чтобы узнать больше, см. Oracle Tutorial .И найдите в Stack Overflow множество примеров и объяснений.
Большая часть функциональности java.time перенесена в Java 6 & 7 в ThreeTen-Backport и дополнительно адаптирована для Android в ThreeTenABP .
Проект ThreeTen-Extra расширяет java.time дополнительными классами.Этот проект является испытательным полигоном для возможных будущих дополнений в java.time.
LocalDate
Класс LocalDate
представляет значение только для даты без времени-дня и без часового пояса.
Для разбора укажите шаблон форматирования.Кстати, я предлагаю использовать стандартные форматы ISO 8601, которые могут быть проанализированы непосредственно классами java.time.
String input = "06/03/2011";
DateTimeFormatter f = DateTimeFormatter.ofPattern ( "MM/dd/uuuu" ).withLocale ( Locale.US );
LocalDate ld = LocalDate.parse ( input , f );
Чтобы получить век, просто возьмите номер года и разделите на 100. Если вы хотите порядковый номер , «двадцать первый век» для 20xx, добавить единицу.
int centuryPart = ( ld.getYear () / 100 );
int centuryOrdinal = ( ( ld.getYear () / 100 ) + 1 );
Дамп на консоль.
System.out.println ( "input: " + input + " | ld: " + ld + " | centuryPart: " + centuryPart + " | centuryOrdinal: " + centuryOrdinal );
вход: 06 /03/2011 |лд: 2011-06-03 |век часть: 20 |Порядковый век: 21