Java8 LocalDate解析异常

Java8 LocalDate解析异常,java,java-8,Java,Java 8,我正在对LocalDate中的字符串进行简单的解析: log.debug("----->" + DateTimeFormatter.ofPattern("EEE").format(LocalDateTime.now())); log.debug("--->" + LocalDate.parse("lun",DateTimeFormatter.ofPattern("EEE",Locale.ITALY))); 不幸的是,此代码给出了以下异常: java.time.forma

我正在对LocalDate中的字符串进行简单的解析:

log.debug("----->" + DateTimeFormatter.ofPattern("EEE").format(LocalDateTime.now()));
    log.debug("--->" +   LocalDate.parse("lun",DateTimeFormatter.ofPattern("EEE",Locale.ITALY)));
不幸的是,此代码给出了以下异常:

java.time.format.DateTimeParseException: Text 'lun' could not be parsed: Unable to obtain LocalDate from TemporalAccessor: {DayOfWeek=1},ISO of type java.time.format.Parsed
at java.time.format.DateTimeFormatter.createError(DateTimeFormatter.java:1919)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1854)
at java.time.LocalDate.parse(LocalDate.java:400)
at it.Main.main(Main.java:60)
 ... 11 more
     Caused by: java.time.DateTimeException: Unable to obtain LocalDate from TemporalAccessor: {DayOfWeek=1},ISO of type java.time.format.Parsed
at java.time.LocalDate.from(LocalDate.java:368)
at java.time.LocalDate$$Lambda$15/42768293.queryFrom(Unknown Source)
at java.time.format.Parsed.query(Parsed.java:226)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1850)
... 13 more
      Exception running application it.Main
事实很奇怪。事实上,数字日期和连贯的模式,所有作品。在我使用java.util.Date和相同的模式之前,所有这些都可以正常工作

你有关于这个问题的一些提示吗


谢谢

LocalDate应该代表一个实际日期-例如,您只传递一个无法翻译成正确的2014年5月26日的日名(星期一)

如果您只想解析星期几,可以使用:

DateTimeFormatter fmt = DateTimeFormatter.ofPattern("EEE", Locale.ITALY);
DayOfWeek day = DayOfWeek.from(fmt.parse("lun"));
使用


工作

Lun是“Lunedì”的缩写形式,在意大利是一天的名称。它对应于“Monday”和缩写“mon”是的,我知道,无论如何,我认为LocalDate不能用于此(您只想保存一个what?lun?这是DayOfWeek)。那么转换它的助手函数呢?也许也可以使用DayOfWeek。我有一天的名称(短或长形式),我想得到一周中某一天的数字。哪种方法应该是正确的?我需要这个来从对象获取ChronoField.DAY\u OF_WEEK。有什么提示吗?谢谢,我会选择@assylias解决方案,因为缺少区域设置意味着对我来说,这段代码很可能会失败(因为我将使用不同的操作系统区域设置运行)。请检查,尽管这对您来说可能不是问题。在我的代码中,它使用默认的语言环境。因此,您可以根据您的区域设置使用当天的名称(“lun”)。
DateTimeFormatter.ofPattern("EEE").parse("lun").get(ChronoField.DAY_OF_WEEK);