我有两个 java.time.Instant 对象
Instant dt1;
Instant dt2;
我想从 dt2 获取时间(只有小时和分钟没有日期)并将其设置为 dt1。最好的方法是什么?使用
dt2.get(ChronoField.HOUR_OF_DAY)
抛出 java.time.temporal.UnsupportedTemporalTypeException
原文由 kostepanych 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有两个 java.time.Instant 对象
Instant dt1;
Instant dt2;
我想从 dt2 获取时间(只有小时和分钟没有日期)并将其设置为 dt1。最好的方法是什么?使用
dt2.get(ChronoField.HOUR_OF_DAY)
抛出 java.time.temporal.UnsupportedTemporalTypeException
原文由 kostepanych 发布,翻译遵循 CC BY-SA 4.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
您必须在某个时区解释 Instant 才能获得
ZonedDateTime
。当 Instant 测量从纪元1970-01-01T00:00:00Z
的流逝秒数和纳秒时,你应该使用UTC
来获得与 Instant 打印相同的时间。 (Z
≙ 祖鲁时间 ≙UTC
)得到时间
还有一些方法可以获取日、月和年(
getX
)。设定时间
瞬间是不可变的,因此您只能通过使用给定时间更改创建瞬间副本来“设置”时间。
还有更改日、月和年的方法 (
withX
) 以及添加 (plusX
) 或减去 (minusX
) 值的方法.要将时间设置为以字符串形式给出的值,请使用:
.with(LocalTime.parse("12:45:30"))