Java8日期时间(LocalDate、LocalTime、LocalDateTime)
在看题的时候发现了Java8中新加入的日期时间类,觉得这个小哥写的不错,自己也跟着练习下。原文地址:https://blog.csdn.net/yy139926/article/details/124298574
前言:
Java中1.8之前有date类,date类到了1.8大部分的方法被弃而且date类如果不格式化可读性十分差,而simpledateformat方法中format和parse方法都是线程不安全的。Java1.8之后出现了localdate,localdatetime,localtime这些类,而这些类使用了final来修饰,使得这些类是不可变的,一旦实例化,值就固定了,有点类似于String类,所以这些类都是线程安全的。
一、LocalDate:年月日
LocalDate类的实例是一个不可变对象,它只提供了简单的日期,并不含当天的时间信息,这个类是不可变的和线程安全的。
| 方法 | 描述 |
|---|---|
| now | 根据当前时间创建LocalDate对象 |
| of | 根据指定年月日创建LocalDate对象 |
| getYear | 获得年份 |
| getMonthValue | 获得月份 |
| getMonth | 获得月份枚举值 |
| getDayOfMonth | 获得月份天数(1-31) |
| getDayOfWeek | 获得星期几 |
| getDayOfYear | 获得年份中的第几天(1-366) |
| lengthOfYear | 获得当年总天数 |
| lengthOfMonth | 获得当月总天数 |
| toEpochDay | 与时间纪元(1970年1月1日)相差的天数 |
| plusDays | 加天 |
| plusWeeks | 加周 |
| plusMonths | 加月 |
| plusYears | 加年 |
| minusDays | 减年 |
| minusWeeks | 减周 |
| minusMonths | 减月 |
| minusYears | 减年 |
| withYear | 替换年份 |
| withYear | 替换年份 |
| withDayOfMonth | 替换日期 |
| withDayOfYear | 替换日期 |
| isBefore | 是否日期在之前 |
| isAfter | 是否日期在之后 |
| isEqual | 是否是当前日期 |
| isleapYear | 是否是闰年 |
1.1、LocalDate常用API
//A.获取
//(1)获取当前日期 2022-07-07
System.out.println(LocalDate.now());
//(2)获取指定日期 2000-03-05
System.out.println(LocalDate.of(2014, 3, 5));
//(3)获取日期的年份 2022
System.out.println(LocalDate.now().getYear());
//(4)获取日期的月份 7
System.out.println(LocalDate.now().getMonthValue());
//(5)获取日期的日子 7
System.out.println(LocalDate.now().getDayOfMonth());
//(6)获取日期的星期 THURSDAY
System.out.println(LocalDate.now().getDayOfWeek());
//(7)当天所在这一年的第几天 188
System.out.println(LocalDate.now().getDayOfYear());
//(8)获取当年天数 365
System.out.println(LocalDate.now().lengthOfYear());
//(9)获取当月天数 31
System.out.println(LocalDate.now().lengthOfMonth());
//(10)与时间纪元(1970年1月1日)相差的天数,负数表示在时间纪元之前多少天 19180
System.out.println(LocalDate.now().toEpochDay());
//B.运算
//(1)加一天
System.out.println("加1天:" + LocalDate.now().plusDays(1));
//(2)加一周
System.out.println("加1周:" + LocalDate.now().plusWeeks(1));
//(3)加一月
System.out.println("加1月:" + LocalDate.now().plusMonths(1));
//(4)加一年
System.out.println("加1年:" + LocalDate.now().plusYears(1));
//(5)减一天
System.out.println("减1天:" + LocalDate.now().minusDays(1));
//(6)减一周
System.out.println("减1周:" + LocalDate.now().minusWeeks(1));
//(7)减一月
System.out.println("减1月:" + LocalDate.now().minusMonths(1));
//(8)减一年
System.out.println("减1年:" + LocalDate.now().minusYears(1));
//C.替换
//(1)替换年份:2000-07-07
System.out.println("替换年份为2000:" + LocalDate.now().withYear(2000));
//(2)替换月份:2020-01-07
System.out.println("替换月份为1:" + LocalDate.now().withMonth(1));
//(3)替换日子:2020-07-01
System.out.println("替换日期为1:" + LocalDate.now().withDayOfMonth(1));
//(4)替换天数:一年中的第多少天
System.out.println("替换天数为1:" + LocalDate.now().withDayOfYear(1));
//D.比较
//(1)是否在当天之前
System.out.println("是否在当天之前:" + LocalDate.now().minusDays(1).isBefore(LocalDate.now()));
//(2)是否在当天之后
System.out.println("是否在当天之后:" + LocalDate.now().plusDays(1).isAfter(LocalDate.now()));
//(3)是否在当天
System.out.println("是否在当天:" + LocalDate.now().isEqual(LocalDate.now()));
//(4)是否是闰年
System.out.println("今年是否是闰年:" + LocalDate.now().isLeapYear());


