【发布时间】:2020-05-01 09:08:02
【问题描述】:
目前我的方法能够解析和格式化带有偏移量的日期和时间。
当我体验过 JUnit 时,我发现 - 对很多人来说非常明显 - 错误是我只能在它包含偏移量时对其进行解析。
我要么得到
Unable to obtain OffsetDateTime from TemporalAccessor 或者我无法用偏移量解析时间。
这是我目前的代码:
工作输入:
"2020-01-12T10:30-06:00"
输入无效:
"2020-01-12T10:30"
OffsetDateTime offsetDateTime = OffsetDateTime.parse(date, buildIso8601Formatter());
Instant instant = offsetDateTime.toInstant();
return LocalDateTime.ofInstant(instant, ZoneOffset.UTC);
它适用于带有偏移量的日期时间,但反之则不行。
最后,我希望能够在同一方法中解析带/不带偏移量的日期时间。
【问题讨论】:
-
您能添加一些示例输入吗?
-
@deHaar 已更新。
-
示例
String无效,因为它缺少:ss部分几秒钟。它只有几小时和几分钟。这意味着您必须提供自定义模式才能解析它。你能也展示一下buildIso8601Formatter()的实现(或使用的模式)吗? -
另一种可能性是添加秒数,例如
"2020-01-12T10:30:00-06:00",然后简单地执行OffsetDateTime offsetDateTime = OffsetDateTime.parse(date)。 -
@deHaar 我能够解析它。我提供了一个不起作用的例子。没有偏移量就无法解析字符串。我在有和没有秒的情况下对其进行了测试,但没有显示出差异。我有点理解为什么,但我无法找到正确的路径来引导我找到解决方案。
标签: java date parsing time timezone