前言
Java8之前处理日期一直是Java程序员比较头疼的问题,从Java 8之后,Java里面添加了许多的新特性,其中一个最常见也是最实用的便是日期处理的类——LocalDate。LocalDate是一种更为高效的日期类,比起Date的复杂具有相当高的简洁性,吸取了企业级别的joda.time
时间处理的优点,避免了传统的Date和Calendar复合起来计算的难处。
新增的日期主要有三种:
java.time.LocalDate ->只对年月日做出处理
java.time.LocalTime ->只对时分秒纳秒做出处理
java.time.LocalDateTime ->同时可以处理年月日和时分秒
LocalDate、LocalTime、LocalDateTime
- LocalDate:代表IOS格式(yyyy-MM-hh)的日期,不包含具体时间的日期,比如2014-01-14。它可以用来存储生日,周年纪念日,入职日期等。;
- LocalTime:它代表的是不含日期的时间;
- LocalDateTime:它包含了日期及时间,不过还是没有偏移信息或者说时区,比较常用;
三种共同特点:
- 相比于前面的Date和Calendar,他们是线程安全的;
- 它们是不可变的日期时间对象;
常用API:
方法 | 描述 |
---|---|
now() ; now(Zoneld zone) | 静态方法,根据当前时间创建对象 ; 指定时区的对象 |
of() | 静态方法,根据指定日期,时间创建对象 |
getDayOfMonth() | 获得月份天数(1-31) |
getDayOfYear() | 获取年份天数(1-366) |
getDayOfWeek() | 获得星期几 |
getYear() | 获得年份 |
getMonth() ; getMonthValue() | 获得月份(返回枚举值如:January) ; 返回数字(1-12) |
getHour();getMinute();getSecond() | 获得当前对象的时,分,秒 |
withDayOfMonth();withDayOfYear();withMonth();withYear() | 将月份天数;年份天数;月份;年份修改为指定的值并且返回新的对象,因为LocalDate等是不变性的 |
plusDays();plusWeeks();plusMonths();plusYears();plusHours() | 向当前对象添加几天、几周、几个月、几年,几小时 |
minusDays();minusWeeks();minusMonths();minusYears();minusHours() | 从当前对象减去几月、几周、几个月、几年、几小时 |
isLeapYear() | 判断是否为闰年 |
isBefore;isEqual;isAfter | 检查日期是否在指定日期前面,相等,后面 |
由于LocalDate的API与LocalTime、LocalDateTime大都是通用的,所有后面两个的就不展示了。
实例:
//now():获取当前日期
LocalDate localDate=LocalDate.now();
LocalTime localTime=LocalTime.now();
LocalTime localTime1= LocalTime.now().withNano(0); // 这个是不带毫秒的
LocalDateTime localDateTime=LocalDateTime.now();
System.out.println("日期:"+localDate);
System.out.println("时间&#x