首页 > 技术文章 > Java学习----JDK8时间类

bananafish 2019-10-27 20:41 原文

JDK8 时间类使用

LocalDate

  • 构建LocalDate对象
    //        获取当前年月日
        LocalDate localDate = LocalDate.now();
    //        构建制定的年月日
        LocalDate localDate1 = LocalDate.of(2019, 10, 13);
  • 获取值
//        获取年
        int year = localDate.getYear();
        int year1 = localDate.get(ChronoField.YEAR);

//        获取月
        Month month = localDate.getMonth();
        int month1 = localDate.get(ChronoField.MONTH_OF_YEAR);

//        获取日
        int day = localDate.getDayOfMonth();
        int day1 = localDate.get(ChronoField.DAY_OF_MONTH);
//        获取星期
        DayOfWeek dayOfWeek = localDate.getDayOfWeek();
        int dayOfWeek1 = localDate.get(ChronoField.DAY_OF_WEEK);

LocalTime

  • 构建LocalTime对象
//        获取当前时间
        LocalTime localTime = LocalTime.now();
//        获取指定时间
        LocalTime localTime1 = LocalTime.of(19, 55, 50);
  • 获取值
//        获取时
        int hour = localTime.getHour();
        int hour1 = localTime.get(ChronoField.HOUR_OF_DAY);
//        获取分
        int minute = localTime.getMinute();
        int minute1 = localTime.get(ChronoField.MINUTE_OF_HOUR);
//        获取秒
        int second = localTime.getMinute();
        int second1 = localTime.get(ChronoField.SECOND_OF_MINUTE);

LocalDateTime

  • 构建LocalDateTime对象
//        获取当前年月日时分秒
        LocalDateTime localDateTime = LocalDateTime.now();
        LocalDateTime localDateTime1 = LocalDateTime.of(2019, 10, 25, 20, 20, 59);
  • 获取值
//        获取LocalDate
        LocalDate localDate2 = localDateTime.toLocalDate();
//        获取LocalTime
        LocalTime localTime2 = localDateTime.toLocalTime();

Instant

//        获取秒数
        Instant instant = Instant.now();
        long second2 = instant.getEpochSecond();
//        获取毫秒数
        long minSecond = instant.toEpochMilli();

时间增减修改

//        增加一年
        localDateTime.plusYears(1);
        localDateTime.plus(1, ChronoUnit.YEARS);
//        增加一个月
        localDateTime.plusMonths(1);
        localDateTime.plus(1,ChronoUnit.MONTHS);
//        减少一天
        localDateTime.minusDays(1);
        localDateTime.minus(1,ChronoUnit.DAYS);

//        修改年某个值
        localDateTime.withYear(2018);
        localDateTime.with(ChronoField.YEAR,2018);

时间差

  • Duration
//        LocalDateTime和LocalTime时间计算
        Duration duration = Duration.between(localTime,localTime1);
        duration.toDays();
        duration.toHours();
  • Period
//        LocalDate时间计算
        Period period = Period.between(localDate,localDate1);
        period.getYears();
        period.getMonths();
//        计算两个时间相差的天数
        LocalDate startDate = LocalDate.parse("2020-01-21");
        LocalDate endDate = LocalDate.parse("2020-03-01");
        endDate.toEpochDay() - startDate.toEpochDay();

时间比较

//  是否在之前
        now1.isBefore(now2);
//  是否在之后
        now1.isAfter(now2);

格式化与解析时间

  • 格式化时间
//        格式化时间
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy hh:mm:ss");
        String date = localDateTime.format(dateTimeFormatter);
  • 解析时间
//        解析时间
        LocalDate localDate3 =  LocalDate.parse("2019-10-30");
        LocalDate localDate4 = LocalDate.parse("20191030",DateTimeFormatter.BASIC_ISO_DATE);
//        DateTimeFormatter
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime time = LocalDateTime.parse("2019-11-11 12:00:00",formatter);

unix时间戳

  • 获取Unix时间戳
        LocalDateTime now= LocalDateTime.now();
        Long timeStamp = now.atZone(ZoneOffset.UTC).toInstant().toEpochMilli();//    毫秒
        // Long time = now.atZone(ZoneOffset.UTC).toEpochSecond();//    秒
  • 解析
        LocalDateTime time = LocalDateTime.ofEpochSecond(1577059200000L/1000,0,ZoneOffset.ofHours(0));

推荐阅读