ТЛ; др
Другие ответы, использующие SimpleDateFormat
, устарели. Вместо этого используйте DateTimeFormatter
.
LocalDate.parse(
"041110" ,
DateTimeFormatter.ofPattern( "ddMMuu" , Locale.US )
)
.format(
DateTimeFormatter.ofPattern( "dd-MMM-uu" , Locale.US )
)
04-Nov-10
java.time
Современный подход использует классы java.time .
String input = "041110" ;
Определите шаблон форматирования, чтобы он соответствовал желаемому результату. Обратите внимание, что мы указываем Locale
для определения человеческого языка и культурных норм при создании названия месяца.
DateTimeFormatter fParse = DateTimeFormatter.ofPattern( "ddMMuu" , Locale.US ) ;
Разобрать ввод, чтобы получить LocalDate
объект. Класс LocalDate
представляет значение только для даты без времени суток и без часового пояса.
LocalDate ld = LocalDate.parse( input , fParse ) ;
Создание String
в стандартном формате ISO 8601 .
ld.toString (): 2010-11-04
У нас в руках LocalDate
объект. Мы хотим создать строку для представления того же значения в другом формате.
DateTimeFormatter fGenerate = DateTimeFormatter.ofPattern( "dd-MMM-uu" , Locale.US ) ;
Создание объекта String.
String output = ld.format( fGenerate ) ;
04-Nov-10
Советы
Как правило, лучше всего позволить java.time автоматически локализовать, а не жестко кодировать шаблон форматирования, как показано здесь. Вместо этого используйте DateTimeFormatter.ofLocalized…
методы.
Избегайте устаревших классов даты и времени, таких как SimpleDateFormat
. Они ужасный беспорядок плохого дизайна. Они были вытеснены годами назад классами java.time по многим веским причинам.
При обмене данными никогда не используйте пользовательские форматы, подобные тем, которые указаны в Вопросе. Используйте стандартные форматы. Они разработаны так, чтобы быть однозначными, легко читаемыми людьми и легко разбираемыми на машине.
О java.time
Фреймворк java.time встроен в Java 8 и более поздние версии. Эти классы вытесняют проблемные старые устаревшие классы даты и времени, такие как java.util.Date
, Calendar
и & SimpleDateFormat
.
Проект Joda-Time , теперь в режиме обслуживания , рекомендует перейти на классы java.time .
Чтобы узнать больше, см. Oracle Tutorial . И поиск переполнения стека для многих примеров и объяснений. Спецификация JSR 310 .
Вы можете обмениваться java.time объектами напрямую с вашей базой данных. Используйте драйвер JDBC , совместимый с JDBC 4.2 или более поздней версии. Нет необходимости в строках, нет необходимости в java.sql.*
классах.
Где получить классы java.time?
Проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является полигоном для возможных будущих дополнений к java.time. Здесь вы можете найти некоторые полезные классы, такие как Interval
, YearWeek
, YearQuarter
и more .