当前位置: 首页 > 面试题库 >

Java 8偏移日期解析

岳安福
2023-03-14
问题内容

我需要将以下格式的String解析为2015-01-15-05:00UTC中的LocalDate(或其他)。问题是以下代码:

System.out.println(LocalDate.parse("2015-01-15-05:00", DateTimeFormatter.ISO_OFFSET_DATE));

输出2015-01-15忽略偏移量。所需的输出是2015-01-16

提前致谢!


问题答案:

最简单的答案是用来OffsetDateTime表示数据,但是您需要默认时间:

DateTimeFormatter fmt = new DateTimeFormatterBuilder()
    .append(DateTimeFormatter.ISO_OFFSET_DATE)
    .parseDefaulting(ChronoField.HOUR_OF_DAY, 0)
    .toFormatter();
OffsetDateTime dt = OffsetDateTime.parse("2015-01-15-05:00", fmt);
LocalDate date = dt.withOffsetSameInstant(ZoneOffset.UTC).toLocalDate();

ZonedDateTime在处理时区时很有用,但是在仅处理偏移量时,OffsetDateTime它会更简单。

通常,应用程序代码不应包含type的变量TemporalAccessor。如果您看到了,通常会有更好的方法。



 类似资料:
  • 提前感谢!

  • 问题内容: 我有一个带有时间戳属性的模型: 时间戳的格式如下: 无法解析此: com.fasterxml.jackson.databind.exc.InvalidFormatException:无法从字符串“ 2017-09-17 13:45:42.710576 + 02” 反序列化类型的值:文本“ 2017-09-17 13:45:42.710576 + 02”可能不能在索引10处解析 我怎样才

  • 问题内容: 我的日期格式是,它产生日期: 但我需要这样的日期: 什么日期格式将产生带有冒号的偏移量? 问题答案: 您可以使用这种格式 看看该文档以获取更多信息。 PS:- 正如我的朋友 @Thomas所 提到的,这仅适用于 Java 7 及更高版本。

  • 我看到多伦多在UTC-4上。 但我怎么才能得到真正的偏移呢?

  • 问题内容: 日期格式:“ yyyy-MM-dd’T’HH:mm:ss.SSSZ ” 输入日期:“ 2017-09-18T03:08:20.888 + 0200 ” 问题:我需要从输入的字符串中检索时区偏移量,并在该时区中打印已解析的日期。换句话说,我需要输出与输入相同。 成功解析输入日期并返回对象。众所周知,Date没有时区字段。将解析的日期转换为其时区,默认情况下为系统时区。当我打印此日期时,它

  • 问题内容: 我想将日期解析为所需的格式,但是每次都会收到异常。我知道这很容易实现,但是我遇到了一些问题,不知道确切的位置: 以下是我的代码: 方法输入:2014-06-04 问题答案: 您的字符串中没有时间部分:月份仅替换两个字符 与