java.time
Java 8 и более поздние версии включают инфраструктуру java.time. Эта структура устаревает старые классы java.util.Date/.Calendar, обсужденные в других ответах здесь.
Пакет java.time.format и его класс java.time.format.DateTimeFormatter используют коды шаблонов, аналогичные кодам, принятым в принятом Ответе Рэя Майерса. Хотя они и похожи, они немного различаются. В частности, они строги в отношении количества повторяющихся символов. Если вы скажете MM
, то месяц должен быть дополнен нулем, иначе вы получите DateTimeParseException . Если номер месяца может иметь или не иметь дополняющий ноль, просто используйте одиночный символ M
.
В этом примере кода обратите внимание, что номер месяца во входной строке имеет нулевой отступ, а номер дня месяца - нет. Оба обрабатываются односимвольным шаблоном.
DateTimeFormatter formatter = DateTimeFormatter.ofPattern ( "M/d/yyyy" );
LocalDate localDate = formatter.parse ( "01/2/2015" , LocalDate :: from );
Дамп на консоль.
System.out.println ( "localDate: " + localDate );
localDate: 2015-01-02