可能Oracle也意识到java处理日期的能力的不足,所以在Java8新增了 LocalDate和LocalTime接口。
众所周知java.util.Date的月份是从0开始算起~0代表一月,1代表二月~呵呵。
确实刚开始接触的时候笔者也用得很纠结~~很烦躁~不过Java8的LocalDate已经改进了这一点~~因为LocalDate的月份是利用枚举(enum)储存的。
妈妈再也不用担心我用错啦~~~
相信有读者已经发现~java.util.Date通用的可以储存年月日时分秒甚至毫秒~~而java8分成了两部分LocalDate和LocalTime。也就是说LocalDate用于存储处理年月日,LocalTime用于储存处理时分秒毫秒。~~分工明确~那么如果想要储存日期和时间呢?没事~还有一个LocalDateTime哈~
基本用法
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格式上有一定要求: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 now=LocalTime.now();
这样就可以获取到当前时间的时分秒LocalTime time=LocalTime.parse("09:52:00");
第二种是:LocalTime zero = LocalTime.of(9, 52, 0);