Java OffsetTime.parse导致ISO_时间格式化程序出现异常
我试图使用ISO_时间格式化程序在LocalTime和字符串之间进行转换,但遇到了一个异常。我的代码如下:Java OffsetTime.parse导致ISO_时间格式化程序出现异常,java,time-format,Java,Time Format,我试图使用ISO_时间格式化程序在LocalTime和字符串之间进行转换,但遇到了一个异常。我的代码如下: LocalTime some_time = LocalTime.of( 10, 10, 10 ); String time_format = some_time.format(DateTimeFormatter.ISO_TIME); System.out.println(OffsetTime.parse(time_format, DateTi
LocalTime some_time = LocalTime.of( 10, 10, 10 );
String time_format = some_time.format(DateTimeFormatter.ISO_TIME);
System.out.println(OffsetTime.parse(time_format, DateTimeFormatter.ISO_TIME ));
最后一行引发异常:
Exception in thread "main" java.time.format.DateTimeParseException: Text '10:10:10' could not be parsed: Unable to obtain OffsetTime from TemporalAccessor: {},ISO resolved to 10:10:10 of type java.time.format.Parsed
at java.time.format.DateTimeFormatter.createError(DateTimeFormatter.java:1920)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1855)
at java.time.OffsetTime.parse(OffsetTime.java:327)
为什么会发生这种情况?我如何解决这个问题
提前感谢您的帮助,
阿纳斯这是因为,好吧,它就在那里的名字。
OffsetTime
既包含实际时间(如“午夜5分钟”)也包含区域偏移,如“+01.00”。(如中所示,在某些当前比UTC时间晚1小时的位置,例如冬季的欧洲大陆)
相反,LocalTime
只包含实际时间,而不包含偏移量
因此,无法将本地时间(无论是字符串形式还是LocalTime
对象)转换为OffsetTime;OffsetTime不知道你想要哪种补偿
您可以这样做:
LocalTime time = LocalTime.parse("10:10:10", DateTimeFormatter.ISO_TIME);
OffsetTime atPlus1 = time.atOffset(ZoneOffset.ofHours(+1));
这里从字符串中获取时间,然后通过编程设置偏移量
让我重复一遍:字符串
10:10:10
基本上不是偏移时间。您可以将该字符串转换为偏移时间,也可以将苹果转换为香蕉。您想要偏移时间做什么?出于好奇而问,因为虽然我用过一次,但我通常很难弄清楚它是否有什么好的和有意义的用途。实际上,我使用它只是因为我必须为一个方法提供一个参数,我无法控制它的签名,它需要额外的时间