运行测试类学习Java中Time的API

这里写图片描述

@Test
    public void testJava8Time(){
        System.out.println("java8采用了新的API来代替原来的设计不够完美的时间API,核心对象为LocalDateTime.它包含了日期和时间以及毫秒值.得到当前时间:localDateTime = " + LocalDateTime.now()+"\n" +
        "localDateTime包含了LocalDate和LocalTime,从其中得到"+"localDate = " + LocalDateTime.now().toLocalDate()+"以及localTime = " + LocalDateTime.now().toLocalTime()+"\n" +
        "以往web开发常用的时间API为Date/Timestamp,得到当前Date = "+new Date()+"以及Timestamp = "+Timestamp.from(Instant.now())+"\n" +
        "相互之间如何转换呢?\n" +
        "转换Date为LocalDateTime:"+LocalDateTime.ofInstant(new Date().toInstant(),ZoneId.systemDefault())+"\n" +
        "转换Date为LocalDate:"+LocalDateTime.ofInstant(new Date().toInstant(),ZoneId.systemDefault()).toLocalDate()+"\n" +
        "转换Date为LocalTime:"+LocalDateTime.ofInstant(new Date().toInstant(),ZoneId.systemDefault()).toLocalTime()+"\n" +
        "转换LocalDateTime为Date:"+Date.from(LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant())+"\n"+
        "转换LocalDate为Date:"+Date.from(LocalDateTime.now().toLocalDate().atStartOfDay(ZoneId.systemDefault()).toInstant())+"\n"+
        "转换LocalTime为Date:"+Date.from(LocalDateTime.now().toLocalTime().atDate(LocalDateTime.now().toLocalDate()).atZone(ZoneId.systemDefault()).toInstant())+"\n"+
        "转换Timestamp为LocalDateTime:"+LocalDateTime.ofInstant(Timestamp.valueOf(LocalDateTime.now()).toInstant(),ZoneId.systemDefault())+"\n"+
        "转换LocalDateTime为Timestamp:"+Timestamp.valueOf(LocalDateTime.now())+"\n"+
        "如何得到两个LocalDateTime或者两个Date之间(注意不能混搭,异常为DateTimeException)的时间数据呢?通过在Temporal接口基础上使用Duration类,例如:\n"+
        "LocalDateTime:"+Duration.between(LocalDateTime.now(),LocalDateTime.now()).getSeconds()+",其中很多方法就不列举了\n"+
        "Date->Instant:"+Duration.between(new Date().toInstant(),new Date().toInstant()).getSeconds()+",其中很多方法就不列举了\n"+
        "如何得到大量不同的模拟时间呢?\n"+
        "LocalDate:"+LocalDate.of(2017,11,2)+"\n"+
        "LocalTime:"+LocalTime.of(22,49,50,454)+"\n"+
        "其中LocalDate/LocalTime转换LocalDateTime:"+LocalDate.now().atStartOfDay()+"//"+LocalTime.now().atDate(LocalDate.now())+"\n"+
        "LocalDateTime包含了很多操作的API,例如修改其中一个值:\n"+
        "例如:修改年(year),注意的是,这个方法会返回一个副本而不会修改原来值,当然你也可以不用with方法而是使用相对方式修改,具体请自行查看API:"+LocalDateTime.now().withYear(2018)+"也可以这样写:"+LocalDate.now().with(ChronoField.MONTH_OF_YEAR, 9)+"\n"+
        "最后非常值得一提的是VS DateFormat(线程不安全)的DateTimeFormatter,用来解析转换LocalDateTime:\n"+
        "解析LocalDateTime为字符串:"+LocalDateTime.now().format(DateTimeFormatter.ofPattern("dd/MM/yyyy"))+"当然也可以使用已经定义好的格式,例如:"+LocalDateTime.now().format(DateTimeFormatter.ISO_DATE)+"\n"+
        ""
        );
    }

猜你喜欢

转载自blog.csdn.net/qq_35559756/article/details/78430475