欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java8新特性_18_新时期与日期API_本地时间和时间戳

程序员文章站 2022-05-05 08:55:09
...
    @Test
    public void test1(){
        LocalDateTime ldt = LocalDateTime.now();
        System.out.println(ldt);

        LocalDateTime ldt2 = LocalDateTime.of(2019, 9, 26, 21, 48);
        System.out.println(ldt2);

        //可以进行年月计算
        //加两年
        LocalDateTime ldt3 = ldt.plusYears(2);
        System.out.println(ldt3);
        //减两个月
        LocalDateTime ldt4 = ldt.minusMonths(2);
        System.out.println(ldt4);

        System.out.println("年:"+ldt.getYear());
        System.out.println("月:"+ldt.getMonth());
        System.out.println("月:"+ldt.getMonthValue());
        System.out.println("日:"+ldt.getDayOfMonth());
        System.out.println("日:"+ldt.getDayOfWeek());
        System.out.println("日:"+ldt.getDayOfYear());
    }

    //2. Instant 时间戳(以 Unix 元年: 1970年1月1日 00:00:00 到某个时间之间的毫秒值)
    @Test
    public void test2(){
        Instant ins1 = Instant.now();//默认获取 UTC 时区
        System.out.println(ins1);

        OffsetDateTime odt = ins1.atOffset(ZoneOffset.ofHours(8));
        System.out.println(odt);
        //转时间戳
        System.out.println(ins1.getEpochSecond());
    }

    //3. Druation: 计算两个“时间”之间的间隔
    //Period: 计算两个“日期”之间的间隔
    @Test
    public void test3(){
        Instant ins1 = Instant.now();
        try {
            Thread.sleep(1000);
        } catch (InterruptedException ignored) {}
        Instant ins2 = Instant.now();

        Duration btn = Duration.between(ins1, ins2);
        System.out.println(btn.getSeconds());//秒
        System.out.println(btn.toMillis());//毫秒

        System.out.println("----------------------------------------");

        LocalTime lt1 = LocalTime.now();
        try {
            Thread.sleep(1000);
        } catch (InterruptedException ignored) {}
        LocalTime lt2 = LocalTime.now();

        System.out.println(Duration.between(lt1, lt2).toMillis());

        System.out.println("----------------------------------------");

        LocalDate of = LocalDate.of(2020, 8, 20);
        LocalDate now = LocalDate.now();
        Period period = Period.between(of, now);
        System.out.println(period.getYears());
        System.out.println(period.getMonths());
        System.out.println(period.getDays());

    }

    //自定义时间格式化
    @Test
    public void test4() {
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime ldt = LocalDateTime.now();
        System.out.println(ldt);
        System.out.println(dtf.format(ldt));//2019-09-26 23:11:53

        System.out.println("-------------------------------------------");
        //LocalDateTime总是表示本地日期和时间,要表示一个带时区的日期和时间,我们就需要            
        ZonedDateTime
        ZonedDateTime zdt = ZonedDateTime.now();
        System.out.println(zdt);
        System.out.println(dtf.format(zdt));
    }
}

 

相关标签: Java8 java8