奇怪的日期字符串格式

Strange String Format for Date

Java 应用程序获取 JSON 消息流, 其中,表示某个日期的字符串字段的格式类似于 \"2019-01-01+01:00\".

看起来是一个正常的日期,后面是timezone-offset,我的这个猜测已经在制作方得到了证实。

问题: 尽管我仍然没有真正理解它背后的逻辑,但我必须在我的 Java 应用程序中解析它。 最简单的方法是在“+”字符上拆分该字符串,然后仅使用 LocalDate 中的某种模式解析日期部分。

但出于好奇,也许 Java 中有一些我不知道的日期格式,这可能允许这种奇怪的字符串格式?

是的。 DateTimeFormatter.ISO_OFFSET_DATE。我同意这很奇怪,我不知道你应该对偏移量有什么用。但是您可以使用格式化程序解析为 LocalDate

    String stringFromJson = "2019-01-01+01:00";
    LocalDate date = LocalDate.parse(stringFromJson, DateTimeFormatter.ISO_OFFSET_DATE);
    System.out.println(date);

输出:

2019-01-01

+(加号)处拆分并不总是有效。 带有偏移量的日期也可能带有负偏移量,例如 -04:00,并带有偏移量 Z(对于零,即 UTC)。当然,您可以编写代码来手动处理每种情况,但最好使用内置格式化程序。

不要使用 DateSimpleDateFormat. 那些 类 设计不佳且早已过时,后者尤其麻烦.使用 LocalDateDateTimeFormatter,均来自 java.time, the modern Java date and time API.