tl; dr
LocalDateTime.parse(
"2011-11-29 12:34:25".replace( " " , "T " )
).format (
DateTimeFormatter.ofPattern( "dd-MM-uuuu" )
)
29-11-2011
Использование java.time
Современный подход использует java.timeклассы, а не проблемные унаследованные классы.
ISO 8601
Ваша строка ввода «2011-11-29 12:34:25» имеет формат, почти соответствующий формату стандарта ISO 8601.Чтобы полностью соответствовать, замените ПРОБЕЛ в середине на T
.
String input = "2011-11-29 12:34:25".replace( " " , "T " );
Без указания часового пояса или смещения от UTC мы анализируем как LocalDateTime
.
LocalDateTime ldt = LocalDateTime.parse( input ) ;
Требуется значение только для даты, поэтому извлекитеLocalDate
.Класс LocalDate
представляет значение только для даты без времени суток и без часового пояса.
LocalDate ld = ldt.toLocalDate() ;
Чтобы создать строку в нужном формате, вы задаете пользовательскийшаблон форматирования.
DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd-MM-uuuu" );
String output = ld.format( f );
О java.time
Фреймворк java.time встроен в Java 8 и более поздние версии.Эти классы вытесняют проблемные старые устаревшие классы даты и времени, такие как java.util.Date
, Calendar
и & SimpleDateFormat
.
Проект Joda-Time , теперь в режиме обслуживания , рекомендует перейти на классы java.time .
Чтобы узнать больше, см. Oracle Tutorial .И поиск переполнения стека для многих примеров и объяснений.Спецификация: JSR 310 .
Где получить классы java.time?
Проект ThreeTen-Extra расширяет Java.время с дополнительными занятиями.Этот проект является полигоном для возможных будущих дополнений к java.time.Здесь вы можете найти несколько полезных классов, таких как Interval
, YearWeek
, YearQuarter
и more .