使用 java.time.clock.systemutc() 获取系统默认时区的时钟,调用其 instant() 方法获得当前时间戳,再传入 instant.get(chronounit.seconds) 即可得到自 unix 纪元以来的秒数。该操作会截断毫秒部分,仅保留整数秒。

Clock.systemDefaultZone() 与 systemUTC() 的区别是什么
两者都返回当前时刻的 Instant,区别在于底层时钟是否随系统时区调整显示。实际获取秒数时,Instant 是绝对时间,不受时区影响,因此结果一致。但若需展示本地时间,应选用对应时钟。

import java.time.Clock;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
public class Main {
public static void main(String[] args) {
Clock clock = Clock.systemUTC();
Instant now = clock.instant();
long seconds = now.get(ChronoUnit.SECONDS);
System.out.println(seconds);
}
}
如果系统时钟发生跳变,get(ChronoUnit.SECONDS) 的值会怎样变化
该值会直接反映跳变后的新时间戳。若时钟向前跳,秒数增加;向后跳,秒数减少。API 不处理跳变逻辑,仅如实返回当前瞬时值的秒级分量。
立即学习“Java免费学习笔记(深入)”;


















