selectedStart = "2019-03-29T10:45-05:00[America/Chicago]";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate parsedDate = LocalDate.parse(selectedStart, formatter);
我从表视图行中获取了我的selectedStart
字符串,并尝试将其转换为LocalDate
,但出现了错误:
文本'2019-03-29T10:45-05:00 [America / Chicago]'无法解析,未解析的文本位于索引10
我只希望以yyyy-MM-dd
格式的日期不希望获得分钟,秒,时区等信息……
答案 0 :(得分:1)
这应该足够了。请注意,我将完整日期 pattern 用于第一个转换,这是必需的(parse
会抛出DateTimeParseException
)。
final String selectedStart = "2019-03-29T10:45-05:00[America/Chicago]";
final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mmXXX'['VV']'");
final LocalDate parsedDate = LocalDate.parse(selectedStart, formatter);
答案 1 :(得分:1)
ZonedDateTime.parse( … ).toLocalDate
您的输入字符串为标准ISO 8601格式,但已扩展为将时区的名称附加在方括号中。此扩展格式正是ZonedDateTime
类中默认使用的格式。
ZonedDateTime.parse( "2019-03-29T10:45-05:00[America/Chicago]" )
如果您只需要没有日期和时区的日期,则提取LocalDate
。
LocalDate ld =
ZonedDateTime.parse( "2019-03-29T10:45-05:00[America/Chicago]" )
.toLocalDate() ;