上一篇我们了解了[java8]java.time包(一)快速简介
接下来,来点实际的吧!
常规使用
-
LocalDate:
代表时间,年月日 -
LocalTime:
代表时间,时分秒 -
LocalDateTime:
相当于,LocalDate + LocalTime,代表时间,年月日时分秒 -
Instant:
代表瞬时时间。注意:可以通过Instant,在Date和LocalDate、LocalTime、LocalDateTime之间做转换。
这里直接转了ImportNew的文章跟上 Java 8 – 日期和时间实用技巧
更多的,会在以下记录,一些常用的例子
常用例子
从Instan获取Date
Date.from(Instant.now())
从Instant获取LocalDateTime
LocalDateTime.ofInstant(Instant.now(), ZoneId.systemDefault());
从现在开始获取上周一的零点(如果减一周后的时间刚好是周一直接返回)
LocalDate.now().minusWeeks(1).with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)).atStartOfDay();
从现在时间往前获取上周末的23:59:59(如果现在的时间就是周一,那么之间减1秒然后返回)
LocalDate.now().with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)).atStartOfDay().minusSeconds(1L);
从现在时间减7天后,再往之前的时间获取周一(如果减7天后的时间就是周一,直接返回)
LocalDate.now().minusDays(7).with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
从现在时间减7天后,再往之后的时间获取周日(如果减7天后的时间就是周日,直接返回)
LocalDate.now().minusDays(7).with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY));
从现在时间获取上个月的最后一天
LocalDate.now().minusMonths(1).with(TemporalAdjusters.lastDayOfMonth());
这里说明下TemporalAdjusters里面的4个方法
next/previous
创建新的日期,并将其值设定为日期调整后或者调整前,第一个符合指定条件(这里使用了星期一举例)要求的日期**
nextOrSame/previousOrSame
创建新的日期,并将其值设定为日期调整后或者调整前,第一个符合指定条件(这里使用了星期一举例))要求的日期,如果该日期已经符合要求,直接返回该对象
注意
后续会慢慢追加,使用到的复杂例子