📜  java.time.Clock类(1)

📅  最后修改于: 2023-12-03 15:01:35.385000             🧑  作者: Mango

Java.time.Clock类介绍

简介

java.time.Clock是Java 8中提供的一个类,它可以获取当前的时间戳。与System.currentTimeMillis()new Date()不同,java.time.Clock是用来获取当前时间的更好方法。是Java 8中新的日期时间API(java.time包)的一部分.

使用方法
获取当前时间

使用java.time.ClocksystemUTC()方法获取当前偏移量为0的UTC时间的实例:

Clock utcClock = Clock.systemUTC();
Instant nowUtc = Instant.now(utcClock);

你也可以使用systemDefaultZone()方法获取默认时区的时间实例:

Clock defaultClock = Clock.systemDefaultZone();
Instant nowDefaultZone = Instant.now(defaultClock);
时间转换

使用java.time包中的其他类和方法完成时间和日期的转换,例如:

// Instant转换成LocalDateTime
Instant now = Instant.now();
LocalDateTime localDateTime = LocalDateTime.ofInstant(now, ZoneId.systemDefault());

// LocalDateTime转换成Instant
LocalDateTime localDateTime1 = LocalDateTime.now();
Instant instant = localDateTime1.toInstant(ZoneOffset.UTC);

// Date转换成Instant
Date date = new Date();
Instant instant1 = date.toInstant();

// Instant转换成Date
Instant instant2 = Instant.ofEpochMilli(System.currentTimeMillis());
Date date1 = Date.from(instant2);
Clock类的其他方法
instant()

使用instant()方法获取当前时间的Instant实例:

Clock utcClock = Clock.systemUTC();
Instant nowUtc = utcClock.instant();
millis()

使用millis()方法获取当前时间的毫秒数:

Clock utcClock = Clock.systemUTC();
long nowMillis = utcClock.millis();
tick()

使用tick()方法获取在系统时钟基础上产生了指定时滴答声的时钟:

Clock clock = Clock.tick(Clock.systemDefaultZone(), Duration.ofSeconds(1));
Instant now = clock.instant(); // 每秒打一个新的“tick”
withZone()

使用withZone()方法获取一个新的时钟,该时钟已调整为指定的时区:

Clock clock1 = Clock.systemUTC();
Clock clock2 = clock1.withZone(ZoneId.systemDefault());
Instant now = clock2.instant();
总结

java.time.Clock类提供了强大灵活的时间管理功能,可以获取在不同时区内的时间戳,并进行时区转换。如果您正在使用Java 8或更高版本,请考虑使用java.time.Clock来管理时间戳。