【问题标题】:How to change LocalDate format resulting into a LocalDate without resulting into a String [duplicate]如何将 LocalDate 格式更改为 LocalDate 而不会导致 String [重复]
【发布时间】:2020-08-03 23:34:54
【问题描述】:

需要将dd-MM-yyyy格式的JavaLocalDate转换成dd/MM/yyyyLocalDate

尝试:

DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDate date = // LocalDate value in dd-MM-yyyy format
String stringDate = dateFormat.format(date);
LocalDate convertedDate = LocalDate.parse(stringDate, dateFormat);

但它仍然导致返回dd-MM-yyyy 格式的日期。有什么有效的方法吗?

【问题讨论】:

  • 你有一些根本性的错误。 LocalDate 没有格式。它只是一个日期对象。当你打印一个LocalDate 对象时,它的toString() 方法会被调用,并且它默认使用yyyy-MM-dd 格式(可能因语言环境而异)。
  • 我明白了。是的,这是有道理的。那么有什么方法可以实现吗?
  • 不,@dineshalwis,没有。最好将日期保存在 LocalDate 中,并将所需格式保存在 String 中。

标签: java formatting localdate


【解决方案1】:

LocalDate.java 中的默认 toString 实现似乎是用“-”作为分隔符硬连线的。所以所有默认的打印语句都会产生相同的格式。似乎唯一的出路是使用格式化程序并获取字符串输出。

return buf.append(monthValue < 10 ? "-0" : "-")
            .append(monthValue)
            .append(dayValue < 10 ? "-0" : "-")
            .append(dayValue)
            .toString();

此外,LocalDate.parse(..) 的目的不是转换日期格式。它实际上只是在 String 中获取一个日期值并给出一个结果 LocalDate 实例。

希望这会有所帮助。

【讨论】:

  • 对不起,我在这里找不到完整的答案。不过谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-22
  • 1970-01-01
  • 2015-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多