форматирование org.joda.time.LocalDate

#java #jodatime

#java #jodatime

Вопрос:

Я работаю над приложением Java. Я конвертирую список локальных данных в строковый массив. Когда я печатаю строковый массив, я должен получить форматированную дату.

Текущий формат даты — 2016-10-12, 2016-10-13.. Я хочу отформатировать его до 12 октября 2016 года 13 октября 2016 года… Я пробовал использовать разные подходы, но это выдает мне ошибку рядом с методом форматирования. Пожалуйста, посоветуйте, как отформатировать дату до 12 октября 2016 года .. и сохранить в строковом массиве. Ниже приведен мой код:

    // import org.joda.time.LocalDate;
    List<LocalDate> localDatesList = new ArrayList<LocalDate>();
    localDatesList.add(new LocalDate());
    localDatesList.add(new LocalDate().plusDays(1));
    localDatesList.add(new LocalDate().plusDays(2));
    localDatesList.add(new LocalDate().plusMonths(1));
    localDatesList.add(new LocalDate().plusMonths(2));
    List<String> tempDatesList = new ArrayList(localDatesList.size());
     for (LocalDate date : localDatesList) {
                tempDatesList.add(date.toString());  
       }
     String[] formattedDates = tempDatesList.toArray(new String[localDatesList.size()]);
for(String dates : formattedDates){
     System.out.println(dates);
                          }
               } }
  

Вывод:

2016-10-12

2016-10-13

2016-10-14

2016-11-12

2016-12-12

Я хочу отформатировать дату с 2016-10-12, 2016-10-13 по 12 октября 2016 года, 13 октября 2016 года..

Я попытался использовать DateTimeFormatter, но когда я использую приведенный ниже код, он выдает ошибку, не удалось распознать метод parseLocalDate.

Я попробовал приведенный ниже код, но не смог распознать метод parseLocalDate(..).

 final DateTimeFormatter formatter = DateTimeFormat.forPattern("MMMM dd,YYYY");

final LocalDate local = formatter.parseLocalDate(date.toString());
  

Ответ №1:

Попробуйте это, добавлены небольшие изменения в вашем коде, форматирование и синтаксический анализ

     String format = "MMMM dd,YYYY";
    final DateTimeFormatter formatter = DateTimeFormat.forPattern(format);

    List<String> dateStrings = new ArrayList<>(localDatesList.size());
    for (LocalDate date : localDatesList) {
        dateStrings.add(date.toString(format)); //format
    }

    System.out.println("Strings "   dateStrings);

    List<LocalDate> localDates = new ArrayList<>();
    for (String dateString : dateStrings) {
        localDates.add(formatter.parseLocalDate(dateString)); //parse
    }

    System.out.println("LocalDates "   localDates);
  

вывод

 Strings [October 13,2016, October 14,2016, October 15,2016, November 13,2016, December 13,2016]
LocalDates [2016-10-13, 2016-10-14, 2016-10-15, 2016-11-13, 2016-12-13]
  

Ответ №2:

В вашем коде вы должны попробовать :

     for (LocalDate date : localDatesList) {
        final DateTimeFormatter formatter = DateTimeFormat.forPattern("MMMM dd,YYYY");          
        String str = formatter.print(date);
        System.out.println(str);
        tempDatesList.add(str);
    }
  

Это печатает :

 October 13,2016
October 14,2016
October 15,2016
November 13,2016
December 13,2016
  

Импортирует :

 import org.joda.time.LocalDate;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;