Java应用程序获取JSON消息流,在“字符串”字段中,表示某个日期的格式如下:\“ 2019-01-01 + 01:00 \”。
它看起来像是一个正常的日期,然后是时区偏移,我的这种猜测已经在生产者方面得到了证实。
问题:即使,我仍然没有真正了解其背后的逻辑,我必须在我的Java App中对其进行解析。最简单的方法是将字符串拆分为'+'字符,然后使用LocalDate中的某些模式解析日期部分。
但是出于好奇,也许我不知道Java中是否存在某些Date格式,它可能允许这种strage字符串格式?
感谢救援!
是的。 DateTimeFormatter.ISO_OFFSET_DATE
。我同意这很奇怪,而且我不知道您应该对抵消有什么用。但是您可以使用格式化程序将其解析为DateTimeFormatter.ISO_OFFSET_DATE
:
LocalDate
输出:
2019-01-01
在 String stringFromJson = "2019-01-01+01:00";
LocalDate date = LocalDate.parse(stringFromJson, DateTimeFormatter.ISO_OFFSET_DATE);
System.out.println(date);
(加号)处分割并不总是有效。具有偏移量的日期也可能带有负偏移量,例如+
,而偏移量-04:00
(对于零,即UTC)。当然,您可以编写代码来手动处理每种情况,但是最好使用内置格式化程序。
不要使用Z
和Date
。这些类的设计很差,而且已经过时,特别是后者非常麻烦。使用SimpleDateFormat
和LocalDate
,都来自DateTimeFormatter
。