【问题标题】:How to parse string (such as "Sunday, July 4, 2021") to LocalDate?如何将字符串(如“2021 年 7 月 4 日星期日”)解析为 LocalDate?
【发布时间】:2021-09-15 14:05:49
【问题描述】:

我正在尝试将字符串 "Sunday, July 4, 2021" 解析为 LocalDate,如下所示:

string this.selectedDate = "Sunday, July 4, 2021";
LocalDate date = LocalDate.parse(this.selectedDate);

但我收到此错误:

java.time.format.DateTimeParseException: Text 'Sunday, July 4, 2021' could not be parsed at index 0

如何将这样的字符串完整日期转换为 LocalDate?

【问题讨论】:

标签: java localdate localdatetime


【解决方案1】:

这样试试吧。

String s = "Sunday, July 4, 2021";
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("EEEE, LLLL d, yyyy");
LocalDate ld =  LocalDate.parse(s, dtf);
System.out.println(ld);

打印

2021-07-04

如果您想更改输出格式,请阅读DateTimeFormatter

注意:如果星期几与月份中的数字日期错误,您将收到解析错误。为避免这种情况,只需跳过或以其他方式忽略星期几。

【讨论】:

  • 请使用您的格式化程序提供明确的语言环境(使用两个参数 of 方法)。如果在具有非英语默认语言环境的计算机或 JVM 上运行,代码会突然失败。
  • 好。 改进建议:正如@OleV.V. 已经指出的,Never use SimpleDateFormat or DateTimeFormatter without a Locale。另外,您为什么选择L 而不是M(这更容易理解)?在yu的情况下,I prefer u to y有很强的理由。
猜你喜欢
  • 2021-11-03
  • 2021-04-29
  • 2021-07-05
  • 1970-01-01
  • 2019-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多