java.time包常用类API学习记录

Posted 落后就要挨打

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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**************

 

 未完待续

以上是关于java.time包常用类API学习记录的主要内容,如果未能解决你的问题,请参考以下文章

Java日期时间API系列33-----Jdk8中java.time包中的新的日期时间API类应用,格式化常用模板大全,新增Excel常用格式。

Java日期时间API系列20-----Jdk8中java.time包中的新的日期时间API类,ZoneId时区ID大全等。

Day028 JDK8中新日期和时间API

java自学-常用api

Java常用API及Math类

Java日期时间API系列35-----Jdk8中java.time包中的新的日期时间API类应用,微秒和纳秒等更精确的时间格式化和解析。