java8新API
LocalDate
LocalDate和LocalDateTime在实际开发中很常用,因为实体类中往往会存在日期时间字段。
类方法:
1、LocalDate.now()
获取当前时间,返回的是LoCalDate实例,不是一个字符串!!!
public static void main(String[] args) {
// 默认根据当前操作系统获取日期,也可以指定一个TimeZone类型的参数
LocalDate localDate = LocalDate.now();
System.out.println(localDate);// 2021-07-09
}
2、LocalDate.parse("2021-10-21")
传入一个字符串,获取LoCalDate实例
LocalDate.parse("2021-10-21")
实例方法
0、localDate.toString()
把日期转化为String类型
// 传一个字符串,返回LocalDate实例
LocalDate localDate = LocalDate.parse("2021-10-21");
System.out.println(localDate.toString()); // "2021-10-21"
1、localDate.getDayOfMoth()、localDate.getDayOfYear()、localDate.getMothValue()
获取当前天数在一年、一个月中是第几天:
public static void main(String[] args) {
// 默认根据当前操作系统获取日期
LocalDate now = LocalDate.now();
// 获取当前天数在一个月中是第几天
System.out.println(now.getDayOfMonth());
// 获取当前天数在一年中是第几天
System.out.println(now.getDayOfYear());
// 获取当前的月份
System.out.println(now.getMonthValue());
}
2、localDate.lengthOfMonth()、localDate.lengthOfYear()、localDate.isLeapYear()
获取当前月的天数、当前年的天数、判断是否闰年:
public static void main(String[] args) {
// 默认根据当前操作系统获取日期
LocalDate now = LocalDate.now();
// 获取当前月的天数
System.out.println(now.lengthOfMonth()); // 31
// 获取当前年的天数
System.out.println(now.lengthOfYear()); // 365
// 获取当前日期所在年是否是闰年
System.out.println(now.isLeapYear()); // false
}
3、localDate.minusDays()
当前时间向前减多少天、多少月、多少周、多少年:
public static void main(String[] args) {
// 默认根据当前操作系统获取日期
LocalDate now = LocalDate.now(); // 2021-07-09
// 以下都是相对于当前时间:============
// 获取前一天的年月日
LocalDate t = now.minusDays(1);
System.out.println(t); // 2021-07-08
// 获取上一个月的 年月日(当前日期减一个月)
System.out.println(now.minusMonths(1)); //2021-06-09
// 获取上一个周的年月日(当前日期减一个周)
System.out.println(now.minusWeeks(1)); //2021-07-02
// 获取上一年的年月日(当前日期减一年)
System.out.println(now.minusYears(1)); //2020-07-09
}
4、localDate.plusMonths()
当前时间向后加多少天:
public static void main(String[] args) {
// 默认根据当前操作系统获取日期
LocalDate now = LocalDate.now(); // 2021-07-09
// 以下都是相对于当前时间:============
// 获取下一个月的 年月日(当前日期加一个月)
System.out.println(now.plusMonths(1)); //2021-08-09
// 获取下一个周的年月日(当前日期加一个周)
System.out.println(now.plusWeeks(1)); //2021-07-16
// 获取下一年的年月日(当前日期加一年)
System.out.println(now.plusYears(1)); //2022-07-09
}
5、localDate.until ( Temporal endExclusive, TemporalUnit unit )
返回值:long类型。
也可以传一个参数,返回的是: Period 实例,使用 Period 类方法也可以计算,项目用到在记录。
计算给定时间与另一个日期的时间量(这个量就是一个单位,根据参数二决定,如:设置秒,就是两个时间差值的秒数是多少,设置天,就是两个时间插值的天数是多少)。
public static void main(String[] args) {
LocalDate localDate = LocalDate.now();
LocalDate localDateEnd = LocalDate.parse("2022-12-02");
System.out.println(localDate.until(localDateEnd, ChronoUnit.DAYS));
}
参数一:interface Temporal 接口类型。
这个接口定义了对时间对象的读写访问。
实现了此接口的类有很多,如下:
参数二:是一个Interface TemporalUnit 接口类型的。
Interface TemporalUnit 是一个接口类。 这个接口定义了表示日期时间的单位,例如:年、月、天、半天、小时、分钟、秒、微妙,实现这些接口需要表示这些单元。 而 ChronoUnit 枚举类就实现了上边 TemporalUtil接口方法:
ChronoUnit 枚举类的常用枚举:
(1)SECONDS("Seconds", Duration.ofSeconds(1)) 秒
(2)MINUTES("Minutes", Duration.ofSeconds(60)) 分钟
(3)HOURS("Hours", Duration.ofSeconds(3600)) 小时
(4)HALF_DAYS("HalfDays", Duration.ofSeconds(43200)) 半天
(5)DAYS("Days", Duration.ofSeconds(86400)) 一天
(6)WEEKS("Weeks", Duration.ofSeconds(7 * 86400L)) 一周
(7)MONTHS("Months", Duration.ofSeconds(31556952L / 12)) 一个月
(8)YEARS("Years", Duration.ofSeconds(31556952L)) 一年
6、localDate.isBefore( ChronoLocalDate other ) 与之对应的是 isAfter()
返回boolean值。
检查一个日期是否在给定日期之前。
参数:interface ChronoLocalDate 是一个接口,实现此接口的类如下:
public static void main(String[] args) {
LocalDate localDate = LocalDate.now();
LocalDate p = LocalDate.parse("2021-10-27");
// 当前日期(2021-07-27)是否在 "2021-10-27"之前
System.out.println(localDate.isBefore(p)); // true
}
7、localDate.equals(Object obj)
返回值:boolean类型。
检查此日期是否跟指定的日期相等。
public static void main(String[] args) {
LocalDate localDate = LocalDate.now();
LocalDate p = LocalDate.parse("2021-07-27");
System.out.println(localDate.equals(p)); // true
}
LocalDateTime
包含日期和时间,方法与LocalDate 一样。
public static void main(String[] args) {
// 默认根据当前操作系统获取日期
LocalDateTime now = LocalDateTime.now();
System.out.println(now); // 2021-07-09T11:35:44.901717300
// 格式化时间 - 线程安全的
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
System.out.println(df.format(now)); //2021-07-09 11:39:27
}
JDBC的映射
LocalDate 对应 date
LocalDateTime 对应 timestamp