如何在java.time.Instant中获取和设置指定的时间?

时间:2015-08-03 11:48:09

标签: java-8

我有两个java.time.Instant对象

Instant dt1;
Instant dt2;

我想从dt2获得时间(只有几小时和几分钟没有日期)并将其设置为dt1。 最好的方法是什么? dt2.get(ChronoField.HOUR_OF_DAY) 抛出java.time.temporal.UnsupportedTemporalTypeException

3 个答案:

答案 0 :(得分:6)

refreshtext: "Refresh"没有任何小时/分钟。请阅读Instant课程的文档:https://docs.oracle.com/javase/8/docs/api/java/time/Instant.html

如果您使用系统时区转换即时消息,则可以使用以下内容:

Instant

答案 1 :(得分:3)

其他答案已经正确了,但是这里的通用代码回答了标题中的问题,更加简洁,可以轻松地粘贴和粘贴。

给出以下Instant instant;

// get overall time
LocalTime time = instant.atZone(ZoneOffset.UTC).toLocalTime();
// get hour
int hour = instant.atZone(ZoneOffset.UTC).getHour();
// get minute
int minute = instant.atZone(ZoneOffset.UTC).getMinute();
// get second
int second = instant.atZone(ZoneOffset.UTC).getSecond();
// get nano
int nano = instant.atZone(ZoneOffset.UTC).getNano();

获取时间

instant = instant.atZone(ZoneOffset.UTC)
        .withHour(hour)
        .withMinute(minute)
        .withSecond(second)
        .withNano(nano)
        .toInstant();

设置时间

x

答案 2 :(得分:2)

首先将Instant转换为LocalDateTime,并使用UTC作为其时区,然后就可以获得其时间。

import java.time.*
LocalDateTime.ofInstant(Instant.now(), ZoneOffset.UTC).getHour()