奇怪的日期字符串格式
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)。当然,您可以编写代码来手动处理每种情况,但最好使用内置格式化程序。
不要使用 Date
和 SimpleDateFormat
. 那些 类 设计不佳且早已过时,后者尤其麻烦.使用 LocalDate
和 DateTimeFormatter
,均来自 java.time, the modern Java date and time API.
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)。当然,您可以编写代码来手动处理每种情况,但最好使用内置格式化程序。
不要使用 Date
和 SimpleDateFormat
. 那些 类 设计不佳且早已过时,后者尤其麻烦.使用 LocalDate
和 DateTimeFormatter
,均来自 java.time, the modern Java date and time API.