Java 将格式化字符串保存到LocalDate
我有一个Java 将格式化字符串保存到LocalDate,java,date-formatting,java-time,formatter,localdate,Java,Date Formatting,Java Time,Formatter,Localdate,我有一个DateConverter类: public class DateConverter extends StringConverter<LocalDate> { String pattern = "EEE, dd. MM. uuuu"; DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern,Locale.US); @Override public String to
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;
}
}
它打印了这个:
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
字段,该字段应该总是格式化的。因此,我不想将字段数据类型更改为字符串 你不能。LocalDate
中没有格式,也不能有格式
如果您坚持模型和演示的分离,那么将格式放入日期也是不正确的。LocalDate
是您的模型的一部分(我猜)。EEE,dd.MM。UUU
格式属于您的演示文稿。您的转换器类将两者连接起来
LocalDate
保存一个值,日历中的一个日期,没有其他内容。与int
保存值的方式大致相同。例如,int
可以保存值64458。对于演示文稿,您可以将其格式化为0000000 64458、+64458或64458等字符串,甚至64458.00或十六进制。int
保持不变。同样地,LocalDate
无论执行何种格式化操作,都保持不变。您只能在LocalDate
之外的字符串中使用所需的格式
作为一种折衷方法,您可以为类提供一个将日期格式化为字符串的getFormattedDate
方法。您可以决定这是否会过多地模糊模型和表示之间的分离,或者因为日期应该始终格式化,在这种情况下,您可以接受。为什么不在示例代码中输出dc.toString(prod.getOnMarket())
?日期本身不是格式化的,它是一组值。如果您想要一致的表示形式,您可以将格式化的日期存储在String
字段中,然后在getDate()
方法中对其进行解析。@daniu那么您建议我在类中将数据类型更改为字符串?您所说的“localdate字段和字段应始终格式化”是什么意思LocalDate
有自己的内部结构,您在控制台中看到的是如何在LocalDate
@LolIPop65中实现toString
。不,这只是保持格式的唯一方法。我建议您保留LocalDate
字段,并在所有需要显示日期的地方使用DateTimeFormatter
。@J-Alex oh我理解。我想我可以更改localdate的结构,这样当我打印localdate时,它将看起来像字符串值。是的,您不能格式化实际数据,但查看时可以对其进行操作,但这并不意味着您修改了实际数据。
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