#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;