我正在使用利用ThreeTen日期类型的客户端库(第三方,不是我的,不能更改)。我的项目是Java 11,并使用Java 8日期类型。将ThreeTeen对象转换为其Java 8对应对象的推荐方法是什么?

最佳答案

似乎没有内置的方法可以将一个实例转换为另一个实例。

我认为您已经编写了自己的转换器,如下所示:

逐部分转换:

public static java.time.OffsetDateTime convertFrom(org.threeten.bp.OffsetDateTime ttOdt) {
    // convert the instance part by part...
    return java.time.OffsetDateTime.of(ttOdt.getYear(), ttOdt.getMonthValue(),
            ttOdt.getDayOfMonth(), ttOdt.getHour(), ttOdt.getMinute(),
            ttOdt.getSecond(), ttOdt.getNano(),
            // ZoneOffset isn't compatible, we need to extract the String-ID
            java.time.ZoneOffset.of(ttOdt.getOffset().toString()));
}

解析另一个实例的格式化输出:
public static java.time.OffsetDateTime convertFrom(org.threeten.bp.OffsetDateTime ttOdt) {
    // convert the instance by parsing the formatted output of the given instance
    return java.time.OffsetDateTime.parse(
            ttOdt.format(org.threeten.bp.format.DateTimeFormatter.ISO_OFFSET_DATE_TIME));
}

尚未测试哪种效率更高...

10-04 15:52