Преобразование FormatDate.MEDIUM в другой формат (LocalDate) в Java

У меня проблема с преобразованием даты в другой формат в java (я использую JodaTime). Фактически, у меня есть отформатированная локальная дата:

24/apr/14 (Italian format date...but other local formats are possible)

Я хотел бы разделить день, месяц и год и увидеть на выходе:

gg: 24
MM: 04
yyyy: 2014

Как я могу получить эти данные?

Спасибо!!


person user3449772    schedule 24.04.2014    source источник


Ответы (1)


Исправив ваше предположение "24/апр/14" как итальянский (и JodaTime, и JDK говорят: d-MMM-yyyy), я нашел этот способ:

String input = "24-apr-2014";
Locale locale = Locale.ITALY;

DateTimeFormatter dtf = DateTimeFormat.mediumDate().withLocale(locale);
LocalDate date = dtf.parseLocalDate(input);

int dayOfMonth = date.getDayOfMonth();
int month = date.getMonthOfYear();
int year = date.getYear();

DecimalFormat df = new DecimalFormat("00");
String dayOfMonthAsText = df.format(dayOfMonth);
String monthAsText = df.format(month);
String yearAsText = new DecimalFormat("0000").format(year);

System.out.println(dayOfMonthAsText); // 24
System.out.println(monthAsText); // 04
System.out.println(yearAsText); // 2014

Кстати, почему вы хотите извлечь текстовые компоненты (что приводит к большому количеству дополнительной работы по форматированию — см. мой код), а не только проанализированные целые значения? Или я вас неправильно понял?

person Meno Hochschild    schedule 24.04.2014