使用java8轻松处理日期

时间:2021-01-13 22:05:38

可能Oracle也意识到java处理日期的能力的不足,所以在Java8新增了 LocalDate和LocalTime接口。

众所周知java.util.Date的月份是从0开始算起~0代表一月,1代表二月~呵呵。

确实刚开始接触的时候笔者也用得很纠结~~很烦躁~不过Java8的LocalDate已经改进了这一点~~因为LocalDate的月份是利用枚举(enum)储存的。

妈妈再也不用担心我用错啦~~~

相信有读者已经发现~java.util.Date通用的可以储存年月日时分秒甚至毫秒~~而java8分成了两部分LocalDate和LocalTime。也就是说LocalDate用于存储处理年月日,LocalTime用于储存处理时分秒毫秒。~~分工明确~那么如果想要储存日期和时间呢?没事~还有一个LocalDateTime哈~

基本用法

获取当前时间与Java.util.Date的用法大同小异:
java.util.Date是这样的:
Date date=new Date();
刚new出来就有当前日期的信息,而LocalDate是这样用的:
LocalDate ld=LocalDate.now();
是不是语义上更加易懂呢?一个now代表了当前时间。


根据年月日获取可以这样写:
LocalDate ld2=LocalDate.of(2015,12,30);
注意上面月份中的12就是代表12月而不是“13月”了~~哈哈


根据字符串获取:
LocalDate ld3=LocalDate.parse("2015-08-20");
根据字符串获取LocalDate格式上有一定要求:
要按照YYYY-MM-DD的形式,比如二月份不能写成2必须写成02才可以

如果取本月第一天可以这样写:
LocalDate firstDay=ld3.with(TemporalAdjuster.firstDayOfMonth());
取本月最后一天也差不多写法:
LocalDate lastDat=ld3.with(TemporalAdjusters.lastDayOfMonth());

取本月第n天:
LocalDate day=ld3.withDayOfMonth(n);
取当前日期的下一天:
LocalDate nextDay=lastday.piusDays(1);
取15年八月份第一个星期一:
LocalDate firstMonday = LocalDate.parse("2015-08-20").with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY)); 



下面是LocalTime的用法

LocalTime的用法与Locald的用法差不多
例如获取当前时间的写法是一样的:
LocalTime now=LocalTime.now();
这样就可以获取到当前时间的时分秒

构造时间分两种方法,第一种是利用一定格式的字符串:
LocalTime  time=LocalTime.parse("09:52:00");
第二种是:
LocalTime zero = LocalTime.of(9, 52, 0);


最后说一下~~既然能够构造日期那么自然可以获取日期的值啦~获取的方法也十分方便~~不再多写直接上一幅图自己领悟吧~
使用java8轻松处理日期