java.time包的Clock类用于使用时区访问当前时刻。且可以使用不同的时区来获取时间。
1.Clock类是一个抽象类,由三个具体的子类实现:
● SystemClock:使用系统时钟来获取时间
● TickClock:通过提供一个持续时间的ticker来获取时间
● FixedClock:使用指定的时间点来获取时间
2.构造方法
● Clock.systemDefaultZone():使用默认时区来创建一个SystemClock对象
● Clock.systemUTC():使用UTC时区来创建一个SystemClock对象
● Clock.system(ZoneId):使用指定的时区来创建一个SystemClock对象
● Clock.tick(Clock, Duration):使用提供的Clock和持续时间来创建一个TickClock对象
● Clock.fixed(Instant, ZoneId):使用指定的时间和时区来创建一个FixedClock对象
3.方法
3.1 获取当前时间
● instant():获取当前时间的Instant对象
● millis():获取当前时间的毫秒数
3.2 获取时区信息
● ZoneId getZone():获取时钟的时区信息
● ZoneOffset getOffset(Instant):获取指定时间的偏移量
3.3 比较时间
● boolean isBefore(Instant):判断当前时间是否在指定时间之前
● boolean isAfter(Instant):判断当前时间是否在指定时间之后
● boolean isEqual(Instant):判断当前时间是否与指定时间相等
3.4转换时间
● Instant instant():获取当前时间的Instant对象
● ZonedDateTime zonedDateTime():获取当前时间的ZonedDateTime对象。如果时钟是FixedClock,则返回的ZonedDateTime对象的时区信息和Clock的时区信息相同;如果时钟是SystemClock或TickClock,则返回的ZonedDateTime对象的时区信息与当前系统时区相同。
● LocalDateTime localDateTime():获取当前时间的LocalDateTime对象。如果时钟是FixedClock,则返回的LocalDateTime对象的时区信息和Clock的时区信息相同;如果时钟是SystemClock或TickClock,则返回的LocalDateTime对象的时区信息为默认时区。
4.代码
5.运行结果
6.总结
这段代码展示了Clock类的示例用法,创建了不同类型的时钟对象,并输出了当前时间。可以通过指定时区来获取时间,也可以使用系统默认时区。另外,通过指定一个持续时间的ticker,可以创建一个每秒钟更新一次的TickClock对象。最后,演示了如何使用FixedClock来输出指定的时间点。