Java 8 无法从类型为java.time.Instant的临时Accessor:2016-12-15T15:58:03Z获取OffsetDateTime

Java 8 无法从类型为java.time.Instant的临时Accessor:2016-12-15T15:58:03Z获取OffsetDateTime,java-8,Java 8,我有以下方法,我正在尝试将新创建的OffsetDateTime与以下类进行比较: public OffsetDateTime getCreatedDateFromToken(String token) { logger.debug("Entered getCreatedDateFromToken "+token); OffsetDateTime o = (OffsetDateTime.from(getClaimsFromToken(token).getIssue

我有以下方法,我正在尝试将新创建的OffsetDateTime与以下类进行比较:

public OffsetDateTime getCreatedDateFromToken(String token) {
        logger.debug("Entered getCreatedDateFromToken  "+token);
        OffsetDateTime o = (OffsetDateTime.from(getClaimsFromToken(token).getIssuedAt().toInstant()));
        logger.debug("OffSetTimeDate is "+o);

        return OffsetDateTime.from(getClaimsFromToken(token).getIssuedAt().toInstant());

    }
但是,我得到以下错误:

java.time.DateTimeException:无法从临时Accessor:2016-12-15T15:58:03Z获取类型为java.time.Instant的OffsetDateTime

@Override
    public OffsetDateTime getCreatedDateFromToken(String token) {
        logger.debug("Entered getCreatedDateFromToken  "+token);
        //OffsetDateTime o = (OffsetDateTime.from(getClaimsFromToken(token).getIssuedAt().toInstant()));
        OffsetDateTime oo = OffsetDateTime.ofInstant(Instant.from(OffsetDateTime.from(getClaimsFromToken(token).getIssuedAt().toInstant())), ZoneOffset.UTC);
        //logger.debug("OffSetTimeDate is "+o);

        return oo;

    }
---------------更新一----------------

我尝试了以下操作,但出现以下错误:

ava.time.DateTimeException:无法从类型为java.time.Instant的临时Accessor:2016-12-15T19:51:57Z获取OffsetDateTime

@Override
    public OffsetDateTime getCreatedDateFromToken(String token) {
        logger.debug("Entered getCreatedDateFromToken  "+token);
        //OffsetDateTime o = (OffsetDateTime.from(getClaimsFromToken(token).getIssuedAt().toInstant()));
        OffsetDateTime oo = OffsetDateTime.ofInstant(Instant.from(OffsetDateTime.from(getClaimsFromToken(token).getIssuedAt().toInstant())), ZoneOffset.UTC);
        //logger.debug("OffSetTimeDate is "+o);

        return oo;

    }

您也可以尝试这样的方法从Instant获取OffsetDateTime

public OffsetDateTime getCreatedDateFromToken(String token) {
    logger.debug("Entered getCreatedDateFromToken  "+token);
    OffsetDateTime offsetDateTime = getClaimsFromToken(token).getIssuedAt().toInstant().atOffset(ZoneOffset.UTC);
    logger.debug("OffSetTimeDate is "+o);
    return offsetDateTime 
}

非常感谢,但我还有一个问题:您的解决方案输出
2016-12-15T20:22:44Z
但是
OffsetDateTime newlyGeneratedDate=OffsetDateTime.now()生成
2016-12-15T15:22:44.780-05:00
,因此我的测试将失败。如何让
.now
使用您的解决方案。您可以尝试OffsetDateTime.now(ZoneOffset.UTC)就是这样。非常感谢。