【发布时间】:2018-06-14 09:04:54
【问题描述】:
我有一个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()方法中解析它。 -
@daniu 所以你建议我在我的类中将数据类型更改为字符串?
-
“本地日期字段且该字段应始终格式化”是什么意思?
LocalDate有自己的内部结构,你在控制台中看到的是toString在LocalDate中是如何实现的。 -
@LolIPop65 不,这只是保持格式的唯一方法。我的建议是保留
LocalDate字段并在所有需要显示日期的地方使用DateTimeFormatter。 -
@J-Alex 哦,我明白了。我想我可以改变 localdate 的结构,所以当我打印 localdate 时,它看起来像字符串值。
标签: java date-formatting java-time formatter localdate