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());