озадачен тем, как преобразовать строку ddmmyy в дату dd-MMM-yy - PullRequest
4 голосов
/ 20 июля 2011

Я озадачен тем, как преобразовать строку ddmmyy в дату dd-MMM-yy в коде Java. Пример -

041110 в качестве строки будет 04-NOV-10 в качестве даты.

Любое предложение будет с благодарностью.

Спасибо.

Ответы [ 6 ]

7 голосов
/ 20 июля 2011

Использование SimpleDateFormat

Что-то вроде

DateFormat input = new SimpleDateFormat("ddMMyy");
DateFormat output = new SimpleDateFormat("dd-MMM-yy");
String result = output.format(input.parse(inputString));
2 голосов
/ 20 июля 2011

Почему бы не использовать SimpleDateFormat?

1 голос
/ 08 апреля 2018

ТЛ; др

Другие ответы, использующие 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?

  • Java SE 8 , Java SE 9 и выше
    • Встроенный.
    • Часть стандартного Java API со встроенной реализацией.
    • Java 9 добавляет некоторые незначительные функции и исправления.
  • Java SE 6 и Java SE 7
    • Большая часть функций java.time перенесена на Java 6 и 7 в ThreeTen-Backport .
  • Android

Проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является полигоном для возможных будущих дополнений к java.time. Здесь вы можете найти некоторые полезные классы, такие как Interval, YearWeek, YearQuarter и more .

1 голос
/ 20 июля 2011
formatter = new SimpleDateFormat("dd-MMM-yy");
String s = formatter.format(date);
1 голос
/ 20 июля 2011

использовать SimpleDateFormat ("дд-ммм-гг")

0 голосов
/ 20 июля 2011

Используйте SimpleDateFormat или имейте карту, которая переводит числа 1-12 в сокращения названия месяца.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...