为了账号安全,请及时绑定邮箱和手机立即绑定

java.time.format.DateTimeParseException:无法在索引0处解析

java.time.format.DateTimeParseException:无法在索引0处解析

largeQ 2021-04-29 09:29:58
我正在尝试将String转换为时间戳。我的字符串包含时间和时区('05:03:05.875 + 02:00'),但是出现以下错误:错误java.time.format.DateTimeParseException:无法在索引0处解析文本'05:03:05.875 + 02:00'代码 String timewithZone= "05:03:05.875+02:00";DateTimeFormatter formatter=DateTimeFormatter.ISO_OFFSET_DATE_TIME;final ZonedDateTime a2=ZonedDateTime.parse(timewithZone,formatter);
查看完整描述

3 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

 String timewithZone = "05:03:05.875+02:00";

    OffsetTime time = OffsetTime.parse(timewithZone);

    System.out.println("Parsed into " + time);

这个输出

解析为05:03:05.875 + 02:00

您的字符串包含一个时间和一个偏移量,但没有日期。这很好地符合ISO_OFFSET_DATE_TIMEZonedDateTimeOffsetTime我认为那是很少使用的类,因为它有时在XML中发生,所以它既不符合也不是,也不符合,而是符合,这是一个很少使用的类。

ISO_OFFSET_TIME内置了一个格式化程序,但是由于这是默认格式,因此OffsetTime我们无需指定它。


查看完整回答
反对 回复 2021-05-12
?
守着星空守着你

TA贡献1799条经验 获得超8个赞

解决方法可能是


DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss.SSSz");

String str = "05:03:05.875+02:00";

LocalTime time = LocalTime.parse(str, formatter);

System.out.println(time);

我以您得到的格式尝试了代码,

输出 :

05:03:05.875

这是您要找的那个吗?


查看完整回答
反对 回复 2021-05-12
?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

您不能使用DateTimeFormatter.ISO_OFFSET_DATE_TIME,因为您的日期格式不符合该要求。

实际上,您甚至没有真实的日期,因为没有日期部分,只有时间部分。您可以使用要接收的格式定义自己的SimpleDateFormat实例,但是您必须处理以下事实:如果没有日期信息,此数据实际上并没有那么有用。例如,该偏移量并不能真正告诉我们太多,因为它可能在某些地区的夏令时(DST)中或不在。这在很大程度上取决于实际的日期,而不仅仅是时间。

您必须找出这些数据的提供者对此的含义,因为现在您根本没有足够的信息来真正将其解析为正确的日期。

如果此数据只是一个简单的时间戳,例如说“我们的全球办公时间午餐时间为12:30”,那么您可以使用LocalTime类。那是少数这样的没有日期的时间字符串真正有用的情况之一。我暗中怀疑这不是您的情况。


查看完整回答
反对 回复 2021-05-12
  • 3 回答
  • 0 关注
  • 527 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信