解析所有ISO 8601日期时间格式Java 1.8
我在我的项目中使用SpringBoot和Java1.8。我们从外部系统接收到需要解析的日期字符串。问题是外部系统可以发送任何符合ISO 8601的日期时间,我们需要解析任何ISO 8601格式的字符串。谁能建议我怎么做?有这样做的图书馆吗
传递的两种日期时间格式是2018-11-01T16:26:15+0100、2018-10-31T08:27:00.0000000Z,还可以有更多
我在StackOverflow上找到了一些建议使用Joda时间转换器的帖子,但我无法用它来解析日期2018-10-31T08:27:00.0000000Z
# 1 楼答案
这可能会为您解决问题,或者至少是一个开始:
输出:
它不会解析所有thinkable ISO 8601字符串,但可能会解析您可以得到的字符串。因为你们只给我们看了两个样品,我不知道
爪哇。现代Java日期和时间API time对ISO 8601非常友好。它处理秒的存在和不存在以及秒的分数(高达9位小数)。这就是我在代码中使用
DateTimeFormatter.ISO_LOCAL_DATE_TIME
的原因。一个小问题是,内置的DateTimeFormatter.ISO_OFFSET_DATE_TIME
(在这里看起来就在这里)需要在UTC偏移量中使用冒号,如+01:00
。相反,我使用的是格式模式XX
。它接受不带冒号的偏移量,还接受Z
,如第二个示例所示。如果还需要更大的灵活性,可以查看格式化程序中的可选部分。检查文档乔达时间使用Java 8时不建议使用。Joda Time主页上的几句话:
即使在Java6和Java7上,我也会推荐Java的后端口。时间一次又一次
链接
java.time
李>