У меня DateConverter
класс:
public class DateConverter extends StringConverter<LocalDate> {
String pattern = "EEE, dd. MM. uuuu";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern,Locale.US);
@Override
public String toString(LocalDate object) {
try {
return formatter.format(object);
} catch(Exception ex) {
return "";
}
}
@Override
public LocalDate fromString(String string) {
try {
return LocalDate.parse(string, formatter);
} catch(Exception ex) {
return null;
}
}
public String getPattern(){
return pattern;
}
}
И у меня есть этот фрагмент кода:
allProd.forEach((prod) -> {
DateConverter dc = new DateConverter();
LocalDate onMarket = dc.fromString(dc.toString(prod.getOnMarket()));
System.out.println("localdate:" + onMarket);
System.out.println("string:"+dc.toString(onMarket));
}
Что печатает это:
localdate:2012-11-08
string:Thu, 08. 11. 2012
localdate:2011-11-13
string:Sun, 13. 11. 2011
localdate:2002-04-11
string:Thu, 11. 04. 2002
Я хочу, чтобы мое значение LocalDate
было отформатировано как строковое значение. Потому что у меня есть класс, в котором есть поле LocalDate
, и поле всегда должно быть отформатировано. Поэтому я не хочу менять тип данных поля на строку.
dc.toString(prod.getOnMarket())
в свой пример кода? Сама по себе дата не форматируется, это набор значений. Если вам нужно согласованное представление, вы можете сохранить отформатированную дату в полеString
, а затем проанализировать это в вашихgetDate()
методах. - person daniu   schedule 04.01.2018LocalDate
имеет свою собственную внутреннюю структуру, вы видите в консоли то, какtoString
реализовано вLocalDate
. - person J-Alex   schedule 04.01.2018LocalDate
и использовать свойDateTimeFormatter
во всех местах, где вам нужно отображать дату. - person daniu   schedule 04.01.2018Locale.setDefault
использования MessageFormat и тому подобное должно работать. Однако потребовались некоторые эксперименты. LocalDate.toString никогда не будет работать. - person Joop Eggen   schedule 05.01.2018