模式"YYYY-MM-dd HH:mm:ss Z"导致解析异常,其中Jodatime没有

kes*_*kes 5 java jodatime java-time

我试图解析ZonedDateTime从s Strings的格式如下:

2017-08-10 16:48:37 -0500

我之前使用Jodatime成功完成了这项工作DateTimeFormat.forPattern("YYYY-MM-dd HH:mm:ss Z").

我试图用Java Time API替换Jodatime,并且相同的模式不再有效.

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("YYYY-MM-dd HH:mm:ss Z");
ZonedDateTime.parse("2017-08-10 16:48:37 -0500", dtf);
Run Code Online (Sandbox Code Playgroud)

导致以下异常:

java.time.format.DateTimeParseException: Text '2017-08-10 16:48:37 -0500' could not be parsed: Unable to obtain ZonedDateTime from TemporalAccessor: {DayOfMonth=10, OffsetSeconds=-18000, WeekBasedYear[WeekFields[SUNDAY,1]]=2017, MonthOfYear=8},ISO resolved to 16:48:37 of type java.time.format.Parsed
Run Code Online (Sandbox Code Playgroud)

在Java Time API中使用格式字符串的正确模式是什么?

小智 6

你应该用你的YYYY部件替换uuuu

    DateTimeFormatter dtf = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss Z");
    ZonedDateTime parsed = ZonedDateTime.parse("2017-08-10 16:48:37 -0500", dtf);
Run Code Online (Sandbox Code Playgroud)

  • 有趣的是,'year`(YYYY)和`year-of-era`(uuuu)之间究竟有什么区别? (2认同)
  • **y**=年,**Y**=周年.如果使用**周数**(1-53),2017年的前半周可能是52,而其**周**将是2016年. (2认同)

归档时间:

查看次数:

910 次

最近记录:

8 年 前