我有两个java.time.Instant对象
Instant dt1;
Instant dt2;
我想从dt2获得时间(只有几小时和几分钟没有日期)并将其设置为dt1。
最好的方法是什么?
dt2.get(ChronoField.HOUR_OF_DAY)
抛出java.time.temporal.UnsupportedTemporalTypeException
答案 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()