美文网首页
学习Java8中的日期类

学习Java8中的日期类

作者: 青年心路 | 来源:发表于2022-03-15 17:37 被阅读0次
    public class Main {
    
        public static void main(String[] args) {
            // 获取今日日期
    //        getToday();
    
            // 获取详细的年月日
    //        getYearAndMonthAndDay();
    
            // 自定义日期
    //        customDate();
    
            // 判断日期是否相等
    //        checkIsEqualsTo();
    
            // 检查周期性日期
    //        checkCycleDate();
    
            // 计算下一周后的日期
    //        getNextWeekDate();
    
            // 获取前一年和后一年的日期
    //        getBeforeAndNextYear();
    
            // 判断日期在当前之前还是之后
    //        checkCurDateIsBeforeOrAfter();
    
            // 检查是否是闰年
    //        checkLeapYear();
    
            // 获取当前时间(不含年月日)
    //        getCurTime();
    
            // 时间加减计算
    //        timePlusAndMinus();
    
            // 通过Clock时钟获取时间
    //        useClock();
    
            // 在特定时区下的当前时间
    //        useZoneDateTime();
    
            // 获取当前年月
    //        getYearAndMonth();
    
            // 获取当月的天数
    //        getDayCountInCurMonth();
    
            // 获取当前时间和指定时间的时间间隔
    //        getTimeGap();
    
            // 通过Duration计算当前日期与指定日期的时间差
    //        getTimeGapUseDuration();
    
            // 获取当前的时间戳
    //        getTimestamp();
    
            // 解析指定时间
    //        parseDate();
    
            // 字符串转时间
    //        stringToDate();
    
            // Date与Instant互转
    //        dateToInstant();
    
            // Date转LocalDateTime
    //        dateToLocalDateTime();
    
            // 毫秒转LocalDateTime
    //        msToLocalDateTime();
    
            // LocalDateTime转MS
    //        localDateTimeToMS();
    
            // LocalDate转Date
            localDateTimeToDate();
        }
    
        /******************************年月日*********************************/
    
        /**
         * 获取今日日期
         */
        public static void getToday() {
            LocalDate today = LocalDate.now();
            System.out.println(today);
        }
    
        /**
         * 获取详细的年月日
         */
        public static void getYearAndMonthAndDay() {
            LocalDate today = LocalDate.now();
            System.out.println(today.getYear());
            System.out.println(today.getMonth().getValue());
            System.out.println(today.getDayOfMonth());
            System.out.println(today.getDayOfWeek().getValue());
            System.out.println(today.getDayOfYear());
        }
    
        /**
         * 自定义日期
         */
        public static void customDate() {
            LocalDate date = LocalDate.of(2020, 5, 21);
            System.out.println(date);
        }
    
        /**
         * 判断日期是否相等
         */
        public static void checkIsEqualsTo() {
            LocalDate date1 = LocalDate.now();
            LocalDate date2 = LocalDate.of(2022, 3, 15);
            System.out.println(date1.equals(date2));
        }
    
        /**
         * 检查周期性事件(如:生日)
         */
        public static void checkCycleDate() {
            LocalDate date1 = LocalDate.now();
            LocalDate date2 = LocalDate.of(2020, 3, 15);
            MonthDay birthday = MonthDay.of(date2.getMonth(), date2.getDayOfMonth());
            MonthDay curDay = MonthDay.from(date1);
    
            if (curDay.equals(birthday)) {
                System.out.println("生日快乐");
            } else {
                System.out.println("又是平凡的一天");
            }
        }
    
        /**
         * 计算一周后的日期
         */
        public static void getNextWeekDate() {
            LocalDate today = LocalDate.now();
            System.out.println("今天的日期:" + today);
            LocalDate nextWeekDate = today.plus(1, ChronoUnit.WEEKS);
            System.out.println("一周后的日期:" + nextWeekDate);
        }
    
        /**
         * 计算前一年和下一年的日期
         */
        public static void getBeforeAndNextYear() {
            LocalDate today = LocalDate.now();
            LocalDate beforeYear = today.minus(1, ChronoUnit.YEARS);
            System.out.println(beforeYear);
            LocalDate nextYear = today.plus(1, ChronoUnit.YEARS);
            System.out.println(nextYear);
        }
    
        /**
         * 判断当前日期相对于另一个日期是早还是晚
         */
        public static void checkCurDateIsBeforeOrAfter() {
            LocalDate today = LocalDate.now();
            LocalDate tomorrow = today.plusDays(1);
            if (tomorrow.isAfter(today)) {
                System.out.println("之后的日期: " + tomorrow);
            }
    
            LocalDate yesterday = today.minusDays(1);
            if (yesterday.isBefore(today)) {
                System.out.println("之前的日期:" + yesterday);
            }
        }
    
        public static void checkLeapYear() {
            LocalDate today = LocalDate.now();
            if (today.isLeapYear()) {
                System.out.println("当前是闰年");
            } else {
                System.out.println("当前是平年");
            }
        }
    
        /******************************时分秒*********************************/
    
        /**
         * 获取当前时间(不含年月日)
         */
        public static void getCurTime() {
            LocalTime time = LocalTime.now();
            System.out.println(time);
        }
    
        /**
         * 时间加减计算
         */
        public static void timePlusAndMinus() {
            LocalTime now = LocalTime.now();
            System.out.println("三小时后:" + now.plusHours(3));
            System.out.println("三小时前:" + now.minusHours(3));
        }
    
        /**
         * Clock时钟的使用,用于获取不同时区下的时间
         */
        public static void useClock() {
            Clock clock = Clock.systemUTC();
            System.out.println("clock: " + clock.instant());
    
            Clock defaultClock = Clock.systemDefaultZone();
            System.out.println("default clock: " + defaultClock.instant());
        }
    
        /**
         * 通过ZoneDateTime表示某时区下的时间
         */
        public static void useZoneDateTime() {
            ZoneId newYork = ZoneId.of("America/New_York");
            LocalDateTime localDateTime = LocalDateTime.now();
            ZonedDateTime dateAndTimeInNewYork  = ZonedDateTime.of(localDateTime, newYork);
            System.out.println("在特定地区的当前日期和时间:" + dateAndTimeInNewYork);
        }
    
        /******************************年月*********************************/
    
        /**
         * 获取当前年月
         */
        public static void getYearAndMonth() {
            YearMonth curYearAndMonth = YearMonth.now();
            System.out.println(curYearAndMonth);
        }
    
        /**
         * 获取当月天数
         */
        public static void getDayCountInCurMonth() {
            YearMonth yearMonth = YearMonth.now();
            System.out.println(yearMonth.lengthOfMonth());
        }
    
        /**
         * 通过Period计算当前时间和某个时间的间隔
         *
         * getMonths()和getDays()的值
         * 5.10/5.1:  1,9
         * 5.10/4.1:1,9  (月份和天数相加才是真正相差的数)
         * 6.10/4.1:2,9  (月份和天数相加才是真正相差的数)
         */
        public static void getTimeGap() {
            LocalDate today = LocalDate.now();
            LocalDate startLearn = LocalDate.of(2022, 2, 7);
            Period period = Period.between(today, startLearn);
            System.out.println("时间间隔:" + period.getMonths());
        }
    
        /**
         * 通过Duration计算时间差值
         */
        public static void getTimeGapUseDuration() {
            LocalDateTime today = LocalDateTime.now();
            LocalDateTime beforeWeek = today.minusWeeks(1);
            Duration duration = Duration.between(today, beforeWeek);
            System.out.println(duration.toHours());
        }
    
        /******************************Instant时间戳*********************************/
    
        /**
         * 获取当前时间的时间戳
         */
        public static void getTimestamp() {
            long timestamp1 = LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
            System.out.println(timestamp1);
    
            long timestamp2 = Instant.now().toEpochMilli();
            System.out.println(timestamp2 + " " + new Date().getTime());
        }
    
        /******************************使用指定的格式解析时间*********************************/
    
        /**
         * 通过指定的格式解析时间
         */
        public static void parseDate() {
            String curDate = "20220315";
            LocalDate localDate = LocalDate.parse(curDate, DateTimeFormatter.BASIC_ISO_DATE);
            System.out.println(localDate);
        }
    
        /**
         * 字符串互转日期类型
         */
        public static void stringToDate() {
            LocalDateTime date = LocalDateTime.now();
            DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
            String str = date.format(formatter1);
            System.out.println("日期转换为字符串:" + str);
    
            DateTimeFormatter format2 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
            LocalDateTime date2 = LocalDateTime.parse(str, format2);
            System.out.println("日期类型:" + date2);
        }
    
        /**
         * Date和Instant互转
         */
        public static void dateToInstant() {
            // Instant转Date
            Date date = Date.from(Instant.now());
            // Date转Instant
            Instant instant = date.toInstant();
            System.out.println(date);
            System.out.println(instant);
        }
    
        /**
         * Date转LocalDateTime
         */
        public static void dateToLocalDateTime() {
            LocalDateTime localDateTime = new Date().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
            System.out.println(localDateTime);
        }
    
        /**
         * 毫秒转LocalDateTime
         */
        public static void msToLocalDateTime() {
            LocalDateTime localDateTime = LocalDateTime.ofInstant(
                    Instant.ofEpochMilli(new Date().getTime()), ZoneId.systemDefault()
            );
            System.out.println(localDateTime);
        }
    
        /**
         * LocalDateTime转毫秒
         */
        public static void localDateTimeToMS() {
            long milli = LocalDateTime.of(2020, 3, 1, 0, 0, 0)
                    .toInstant(ZoneOffset.of("+8")).toEpochMilli();
            System.out.println(milli);
        }
    
        /**
         * LocalDate转Date
         */
        public static void localDateTimeToDate() {
            LocalDate now = LocalDate.now();
            Date date = Date.from(now.atStartOfDay(ZoneId.systemDefault()).toInstant());
            System.out.println(date);
        }
    }
    

    相关文章

      网友评论

          本文标题:学习Java8中的日期类

          本文链接:https://www.haomeiwen.com/subject/wppydrtx.html