java - 将格式化字符串保存到 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 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 字段,并且该字段应该始终被格式化。所以我不想将字段数据类型更改为字符串。

最佳答案

你不能。 LocalDate 没有也不可能有格式。

如果您坚持模型和演示的分离,那么将格式放入日期也是不正确的。 LocalDate 是您模型的一部分(我认为)。 EEE,dd。毫米。 uuuu 格式属于您的演示文稿。您的转换器类将两者联系起来。

LocalDate 保存一个值,即日历中的日期,仅此而已。与 int 保存值的方式非常相似。例如,int 可能保存值 64458。为了演示,您可以将其格式化为字符串,如 000000064458、+64458 或 64,458 甚至 64458.00 或十六进制。 int 保持不变。同样,无论您执行哪种格式化操作,您的 LocalDate 都保持不变。您只能在 LocalDate 之外的 String 中使用所需的格式。

作为折衷方案,您可以使用 getFormattedDate 方法来为您的类添加将日期格式化为字符串的方法。您可以决定这是否会过多地模糊模型和演示文稿之间的分离,或者由于日期应始终格式化,在这种情况下您可以接受。

关于java - 将格式化字符串保存到 LocalDate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48098566/

相关文章:

尽管在 Oracle 教程示例代码中显示,Java 8 Instant 类没有 plusHours 方法

java - 如何通过 .bat 文件运行 java 应用程序

mysql - 如何在MySQL中选择转换字段?

asp.net-mvc - 像 .NET 中的 moment.js 一样格式化日期

java - 如何将时间戳字符串转换为纪元时间?

Java 8 时间 API : how to parse string of format "MM.yyyy" to LocalDate

java - 在 Android 中将参数设置为布局时崩溃

java - 通过 JNI 将多个参数从 java 传递到 c++ 应用程序

java - 如何将quickbooks的java sdk集成到android应用程序中?

java - LocalDate Formatter 月份基数