【发布时间】:2016-01-06 16:11:50
【问题描述】:
我正在尝试构建一个 DateTimeFormatter,它可以接受带冒号的偏移量或不带冒号的偏移量。
有没有办法通过这个测试:
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss[X]");
dateTimeFormatter.parse("2015-01-28T10:21:44+0100"); // OK
dateTimeFormatter.parse("2015-01-28T10:21:44+01:00"); // KO
【问题讨论】:
-
您认为可选的冒号是区域偏移部分的固定部分。您只能在模式字母 X(不带冒号)或 XXX(带冒号)之间进行选择。这意味着整个区域偏移是可选的,而不仅仅是里面的冒号。
-
我同意,它应该可以工作。但是当我使用 [X] 时,它需要一个不带冒号的偏移量,而当我使用 [XXX] 时,它需要一个带冒号的偏移量。我不能同时使用两者。
-
根据Javadoc:用符号X给出这些例子:Z; -08; -0830; -08:30; -083015; -08:30:15;
-
请阅读 javadoc 部分“偏移 X 和 x”。它精确地描述了字母 X,x 的数量与哪种格式表示相关联。所以我们有:XX(不带冒号)和 XXX(带冒号)。 X(不带冒号)使分钟部分是可选的。