当前位置: 首页 > 知识库问答 >
问题:

将包含周和年的字符串解析为LocalDate[duplicate]

索嘉胜
2023-03-14

我想解析的字符串类型是:“36/2017”,其中36是一年中的一周,2017是一年。

我的代码:

DateTimeFormatter formatter = new DateTimeFormatterBuilder()
                    .appendPattern("w/uuuu")
                    .parseDefaulting(ChronoField.DAY_OF_WEEK, 1)
                    .toFormatter();
LocalDate date = LocalDate.parse("36/2017", formatter);

我添加了一个默认日期。

我有这个信息:

java.time.format.DateTimeParseException: Text '36/2017' could not be parsed: Unable to obtain LocalDate from TemporalAccessor: {WeekOfWeekBasedYear[WeekFields[MONDAY,4]]=36, Year=2017, DayOfWeek=1},ISO of type java.time.format.Parsed

任何想法?谢谢你!

共有2个答案

融焕
2023-03-14

模式是错误的。您必须设置以下字符串

"w/YYYY"

DateTimeFormatter formatter = new 
DateTimeFormatterBuilder()
                .appendPattern("w/YYYY")
                .parseDefaulting(ChronoField.DAY_OF_WEEK, 1)
                .toFormatter();
LocalDate date = LocalDate.parse("36/2017", formatter);
唐海阳
2023-03-14

从文档中:https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html

如果你用的是周,你应该用大写的Y。

public static void main(String[] args) {
    DateTimeFormatter formatter = new DateTimeFormatterBuilder()
            .appendPattern("w/YYYY")
            .parseDefaulting(ChronoField.DAY_OF_WEEK, 1)
            .toFormatter();
    LocalDate date = LocalDate.parse("36/2017", formatter);
}
 类似资料:
  • 问题内容: 我的输入是以2015年7月1日格式为“ 01-07-2015”的日期的字符串表示形式。我正在尝试将其解析为一个变量: 基于JavaDoc,我希望它能起作用。但是,我收到了一条非常友好和有用的信息: 由以下原因引起:java.time.DateTimeException:无法从TemporalAccessor获取LocalDate:{DayOfMonth = 1,MonthOfYear

  • 我的输入是2015年7月1日日期的字符串表示形式,格式为“01-07-2015”。我试图将其解析为变量: 基于JavaDoc,我希望这能起作用。然而,我收到了一条非常友好和有益的信息: 原因:java.time.DateTimeException:无法从TemporalAccessor获取LocalDate:{DayofMonth=1,MonthofYear=7,WeekBasedYear[Wee

  • 我试图用localdate解析以下字符串:“04 Aug 2015”。 在尝试了DateTimeFormatters的一些变体之后,我在SO中寻找答案,并发现answer中给出的一些解析示例对我不起作用。经过进一步的研究,我发现Java14不能解析包含字符串月份的日期,如“jul”、“feb”。但在Java8&10中,它工作得完美无缺。 引发的异常是: 下面是在Java8/10上成功打印并在Jav

  • 我想将转换为,但由于某种原因无法转换。

  • 我有一个格式有时间戳的字符串 “2021-02-04 23:45:00”但是当我尝试用time.parse解析它时,它似乎切断了年份部分。 代码是 其中此时的record[i]是一个字符串 2021-02-04 00:15:00 和阅读。间隔就是时间。时间 Printf中返回的错误是 我在我做过的任何搜索中都找不到。我在这里错过了什么?