本文介绍了使用Java8将一年String解析为LocalDate的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用Joda库,你可以做到

With Joda library, you can do

DateTimeFormat.forPattern("yyyy").parseLocalDate("2008")

在2008年1月1日创建LocalDate

that creates a LocalDate at Jan 1st, 2008

使用Java8,你可以尝试

With Java8, you can try to do

LocalDate.parse("2008",DateTimeFormatter.ofPattern("yyyy"))

但无法解析:

Text '2008' could not be parsed: Unable to obtain LocalDate from TemporalAccessor: {Year=2008},ISO of type java.time.format.Parsed

有没有其他选择,而不是专门写等......

Is there any alternative, instead of specifically writing sth like

LocalDate.ofYearDay(Integer.valueOf("2008"), 1)

推荐答案

LocalDate 解析要求所有的年,月和日期已被指定。

LocalDate parsing requires that all of the year, month and day are specfied.

您可以使用 DateTimeF指定月份和日期的默认值ormatterBuilder 并使用 parseDefaulting 方法:

You can specify default values for the month and day by using a DateTimeFormatterBuilder and using the parseDefaulting methods:

DateTimeFormatter format = new DateTimeFormatterBuilder()
     .appendPattern("yyyy")
     .parseDefaulting(ChronoField.MONTH_OF_YEAR, 1)
     .parseDefaulting(ChronoField.DAY_OF_MONTH, 1)
     .toFormatter();

LocalDate.parse("2008", format);

这篇关于使用Java8将一年String解析为LocalDate的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-13 23:44