沈阳建站多少钱,什么是自媒体,怎么设计门户网站,重庆网络科技有限公司Java日期工具类LocalDate 嘚吧嘚java.util.DateJava8新增日期类时区 LocalDate - API创建日期获取年月日修改年月日日期比较 嘚吧嘚
java.util.Date
在Java8之前通常会使用Date结合SimpleDateFormat、Calender来处理时间和日期的相关需求。 1、可读性差、易用性差、使用起来冗… Java日期工具类LocalDate 嘚吧嘚java.util.DateJava8新增日期类时区 LocalDate - API创建日期获取年月日修改年月日日期比较 嘚吧嘚
java.util.Date
在Java8之前通常会使用Date结合SimpleDateFormat、Calender来处理时间和日期的相关需求。 1、可读性差、易用性差、使用起来冗余繁琐 2、java.util.Date 是非线程安全的 3、java.util.Date 存在千年虫问题、并且不支持国际化和时区、故大部分方法被声明为过时、不建议再使用 4、java.util和java.sql两包中都有Date类设计上并不合理 Java8新增日期类
Java8新增的日期类主要有三个 LocalDate表示日期年月日 LocalTime 表示时间时分秒 LocalDateTime表示日期 时间年月日时分秒是java8最常用的日期类 这些类使用了final来修饰使得这些类是不可变的一旦实例化值就固定了有点类似于String类。 因此它们都是线程安全的。
时区
在本文中会用到时区所以给大家介绍几个常用的时区。
函数声明描述ZoneId.of(“Asia/Shanghai”)上海ZoneId.of(“Asia/Chongqing”)重庆ZoneId.of(“Asia/Chungking”)重庆ZoneId.of(“Asia/Hong_Kong”)香港ZoneId.of(“Hongkong”)香港
可以使用下面代码查看所有时区。
SetString availableZoneIds ZoneId.getAvailableZoneIds();
System.out.println(availableZoneIds.size());
availableZoneIds.forEach(System.out::println);本篇文章先梳理一下LocalDate的相关内容。
LocalDate - API
创建日期
函数声明描述static LocalDateTime now()获取默认时区的当前日期时间LocalDate of(int year, int month, int dayOfMonth)根据指定年月日创建LocalDate对象static LocalDate now(ZoneId zone)获取指定时区的当前日期对象static LocalDate now(Clock clock)从指定时钟获取当前日期对象
DateTimeFormatter formatter DateTimeFormatter.ofPattern(yyyy-MM-dd);
// 获取当前日期
LocalDate now LocalDate.now();
// 指定时区
LocalDate now2 LocalDate.now(ZoneId.of(Asia/Shanghai));
LocalDate now3 LocalDate.now(ZoneId.of(Canada/Yukon));
// 指定时钟
LocalDate now4 LocalDate.now(Clock.systemDefaultZone());
// 指定时间
LocalDate date1 LocalDate.of(1999, 12, 5);
System.out.println(now : now.format(formatter));
System.out.println(now2 : now2.format(formatter));
System.out.println(now3 : now3.format(formatter));
System.out.println(now4 : now4.format(formatter));
System.out.println(date1 : date1.format(formatter));获取年月日
函数声明描述int getYear()获取年份Month getMonth()获取月份返回值为月份的枚举int getMonthValue()获取月份返回值为int类型月份DayOfWeek getDayOfWeek()获取日期是星期几int getDayOfMonth()获取日期在该月是第几天int getDayOfYear()获取日期在该年是第几天int lengthOfMonth()本月份总天数int lengthOfYear()本年度总天数long toEpochDay()与时间纪元(1970年1月1日)相差的天数
LocalDate now LocalDate.now();
System.out.println(getYear : now.getYear());
System.out.println(getMonth : now.getMonth());
System.out.println(getMonthValue : now.getMonthValue());
System.out.println(getDayOfMonth : now.getDayOfMonth());
System.out.println(getDayOfWeek : now.getDayOfWeek());
System.out.println(getDayOfYear : now.getDayOfYear());
System.out.println(lengthOfMonth : now.lengthOfMonth());
System.out.println(lengthOfYear : now.lengthOfYear());
System.out.println(toEpochDay : now.toEpochDay());修改年月日
函数声明描述LocalDate plusYears(long years)增加年LocalDate plusMonths(long months)增加月份LocalDate plusWeeks(long weeks)增加周LocalDate plusDays(long days)增加日LocalDate minusYears(long years)减少年LocalDate minusMonths(long months)减少月份LocalDate minusWeeks(long weeks)减少周LocalDate minusDays(long days)减少日LocalDate withDayOfMonth(int dayOfMonth)替换月份中的第几天(1-31)LocalDate withDayOfYear(int dayOfYear)替换年份中的第几天(1-366)
DateTimeFormatter formatter DateTimeFormatter.ofPattern(yyyy-MM-dd);
// 获取当前日期
LocalDate now LocalDate.now();
System.out.println(now : now.format(formatter));System.out.println(plusDays : now.plusDays(1));
System.out.println(minusDays : now.minusDays(-1));
System.out.println(-------------------------------------);
System.out.println(plusDays : now.plusDays(-2));
System.out.println(minusDays : now.minusDays(2));System.out.println(withDayOfMonth : now.withDayOfMonth(2));
System.out.println(withDayOfYear : now.withDayOfYear(36));plusXxx是增加时间minusXxx是减少时间但查看源码可以发现minusXxx还是用的plusXxx所以这两类方法传参可为正数也可为负数。正负号相同、数字相同时效果相反。
日期比较
函数声明描述boolean isEqual(ChronoLocalDate other)判断日期时间是否相等boolean isAfter(ChronoLocalDate other)检查是否在指定日期时间之前boolean isBefore(ChronoLocalDate other)检查是否在指定日期时间之后boolean isLeapYear()是否是闰年 欢迎补充。