📅  最后修改于: 2023-12-03 15:01:35.385000             🧑  作者: Mango
java.time.Clock
是Java 8中提供的一个类,它可以获取当前的时间戳。与System.currentTimeMillis()
和new Date()
不同,java.time.Clock
是用来获取当前时间的更好方法。是Java 8中新的日期时间API(java.time
包)的一部分.
使用java.time.Clock
的systemUTC()
方法获取当前偏移量为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);
使用instant()
方法获取当前时间的Instant
实例:
Clock utcClock = Clock.systemUTC();
Instant nowUtc = utcClock.instant();
使用millis()
方法获取当前时间的毫秒数:
Clock utcClock = Clock.systemUTC();
long nowMillis = utcClock.millis();
使用tick()
方法获取在系统时钟基础上产生了指定时滴答声的时钟:
Clock clock = Clock.tick(Clock.systemDefaultZone(), Duration.ofSeconds(1));
Instant now = clock.instant(); // 每秒打一个新的“tick”
使用withZone()
方法获取一个新的时钟,该时钟已调整为指定的时区:
Clock clock1 = Clock.systemUTC();
Clock clock2 = clock1.withZone(ZoneId.systemDefault());
Instant now = clock2.instant();
java.time.Clock
类提供了强大灵活的时间管理功能,可以获取在不同时区内的时间戳,并进行时区转换。如果您正在使用Java 8或更高版本,请考虑使用java.time.Clock
来管理时间戳。