可能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);