java.time包常用类API学习记录
Java8出来已那么多年了,java.time包之前一直没有使用过,最近正好有用到,在此做个记录。
上图列出了java.time包下的类,接下来我们详细看下其中每个类的用法。
Clock:获取到当前时间点,包含时区信息,该类是抽象类,其实现类由其内部类实现,也可以自定义其实现类。
Clock方法描述:
- getZone():获取创建日期时间的时区;
- withZone(ZoneId zone):返回一个指定时区clock副本;
- instant():返回instant实例;
- millis():获取当前instant实例toEpochMilli()返回毫秒;
import java.time.Clock; import java.time.Instant; import java.time.ZoneId; public class ClockDemo { public static void main(String[] args) { systemClock(); } public static void systemClock() { ZoneId zoneIdParam = ZoneId.of("Asia/Tokyo"); // 获取UTC时区clock实例 Clock clock = Clock.systemUTC(); System.out.println("************UTC************"); descriptionClock(clock, zoneIdParam); // 获取默认时区 System.out.println("************default zone************"); clock = Clock.systemDefaultZone(); descriptionClock(clock, zoneIdParam); // 指定时区 ZoneId zoneId = ZoneId.of("Asia/Yerevan"); System.out.println("************specific zone************"); clock = Clock.system(zoneId); descriptionClock(clock, zoneIdParam); } public static void descriptionClock(Clock clock, ZoneId zoneIdParam) { System.out.println("************begin************"); displayInfo(clock); clock = clock.withZone(zoneIdParam); System.out.println("************change zone*************"); displayInfo(clock); System.out.println("************end**************"); } private static void displayInfo(Clock clock) { ZoneId zoneId = clock.getZone(); System.out.println("当前时区:" + zoneId.getId()); Instant instant = clock.instant(); System.out.println("当前时间(ISO-8601):" + instant); long currentTime = clock.millis(); System.out.println("当前时间毫秒:" + currentTime); } }
************UTC************
************begin************
当前时区:Z
当前时间(ISO-8601):2019-09-28T08:58:42.802Z
当前时间毫秒:1569661122869
************change zone*************
当前时区:Asia/Tokyo
当前时间(ISO-8601):2019-09-28T08:58:42.869Z
当前时间毫秒:1569661122869
************end**************
************default zone************
************begin************
当前时区:Asia/Shanghai
当前时间(ISO-8601):2019-09-28T08:58:42.873Z
当前时间毫秒:1569661122873
************change zone*************
当前时区:Asia/Tokyo
当前时间(ISO-8601):2019-09-28T08:58:42.873Z
当前时间毫秒:1569661122873
************end**************
************specific zone************
************begin************
当前时区:Asia/Yerevan
当前时间(ISO-8601):2019-09-28T08:58:42.874Z
当前时间毫秒:1569661122874
************change zone*************
当前时区:Asia/Tokyo
当前时间(ISO-8601):2019-09-28T08:58:42.874Z
当前时间毫秒:1569661122874
************end**************
未完待续