程序员社区

JAVA8新特性-----新时间与日期API

新时间与日期API

  • 新的时间和日期API
  • Instant : 时间戳
  • Duration计算时间间隔,Period计算日期间隔
  • 时间校正器
  • 时间和日期格式化---DateTimeFormatter

新的时间和日期API

在这里插入图片描述

        //只获取当前系统的日期
        LocalDate now = LocalDate.now();
        System.out.println("当前系统的日期:"+now);
        //只获取当前系统的时间
        LocalTime time = LocalTime.now();
        System.out.println("当前系统的时间:"+time);
        //获取当前系统的日期和时间
        LocalDateTime lt=LocalDateTime.now();
        System.out.println("当前系统时间:"+lt);
        //自定义日期和时间---会产生一个新的实例
        LocalDateTime endTime = LocalDateTime.of(2021, 5, 20, 5, 20, 5);
        System.out.println("定制时间:"+endTime);
        //在原有时间基础上进行时间的加减,返回一个新的实例,即不修改原来的时间
        LocalDateTime pl = lt.plusYears(2);
        System.out.println("时间增加两年:"+pl);
        //获取当前日期和时间的具体信息
        int year = lt.getYear();
        System.out.println("当前年份:"+year);
        Month month = lt.getMonth();
        System.out.println("当前的月份:"+month);

在这里插入图片描述
LocalDateTime基本使用(包括Data转化)


Instant : 时间戳

(以Unix元年: 1970年1月1日 00:00:00 到某个时间之间的毫秒值)

        Instant ins1=Instant.now();//默认获取UTC时区,与中国上海的时区相差8小时
        System.out.println(ins1);
          //获取偏移8小时后的时区
        OffsetDateTime odt = ins1.atOffset(ZoneOffset.ofHours(8));
        System.out.println(odt);

在这里插入图片描述

【jdk1.8特性】之Instant


Duration计算时间间隔,Period计算日期间隔

       LocalDate now=LocalDate.now();
        LocalDate past = LocalDate.of(2020, 1, 1);
        //计算日期相隔的时间
        Period between = Period.between(past, now);
        System.out.println(between.getYears()+"年 "+between.getDays()+"月  "+between.getDays()+"日");

在这里插入图片描述

       LocalDateTime now=LocalDateTime.now();
        LocalDateTime past = LocalDateTime.of(2020, 1, 1,1,1,1);
        //计算时间相隔
        Duration between = Duration.between(past, now);
        System.out.println(between);

在这里插入图片描述


时间校正器

时间校正器基本用法如下:

public class TemporalAdjusterDemo {

    public static void main(String[] args) {
        demo1();
    }

    /**
     * 将日期调整到下个周日
     */
    public static void demo1(){
        LocalDate localDate = LocalDate.now();
        System.out.println(localDate);

        // 指定时间为这个月2号
        LocalDate localDate2 = localDate.withDayOfMonth(2);
        System.out.println(localDate2);

        // 通过时间校正器 : 获取下一个月的一号
        LocalDate localDate3 = localDate.with(TemporalAdjusters.firstDayOfNextMonth());
        System.out.println(localDate3);
        // 通过时间校正器 : 获取下一个周日
        LocalDate localDate4 = localDate.with(TemporalAdjusters.next(DayOfWeek.SUNDAY));
        System.out.println(localDate4);

        // 自定义下一个周一是什么时候
        //通过函数式接口完成(lambda表达式)
        Function<LocalDate,LocalDate> function = (localDateTime -> {
            DayOfWeek dayOfWeek = localDateTime.getDayOfWeek();
            LocalDate returnValue = null;
            switch (dayOfWeek){
                case MONDAY: returnValue = localDateTime; break;
                case TUESDAY: returnValue = localDateTime.plusDays(6);break;
                case WEDNESDAY: returnValue = localDateTime.plusDays(5);break;
                case THURSDAY: returnValue = localDateTime.plusDays(4);break;
                case FRIDAY: returnValue = localDateTime.plusDays(3);break;
                case SATURDAY: returnValue = localDateTime.plusDays(2);break;
                case SUNDAY: returnValue = localDateTime.plusDays(1);break;
            }
            return returnValue;
        });
        System.out.println(function.apply(localDate));
    }
}

时间和日期格式化—DateTimeFormatter


        //使用官方提供的日期格式:这里只列举一个,官方还提供了很多,大家可以自行尝试
        DateTimeFormatter dtf3=DateTimeFormatter.ISO_DATE;
        LocalDateTime now=LocalDateTime.now();
        String s = dtf3.format(now);
        System.out.println("官方格式化: "+s);
        System.out.println("-----------------------");
        DateTimeFormatter cus = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:ss:mm");
        String cusf = cus.format(now);
        System.out.println("自定义日期格式: "+cusf);
        System.out.println("--------------------------------");
        System.out.println("将格式化后的字符串转化为原来的字符串:");
        LocalDateTime newDate = now.parse(cusf, cus);
        System.out.println(newDate);

在这里插入图片描述


赞(0) 打赏
未经允许不得转载:IDEA激活码 » JAVA8新特性-----新时间与日期API

相关推荐

  • 暂无文章

一个分享Java & Python知识的社区