[java8]java.time包(二)快速实践

上一篇我们了解了[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
创建新的日期,并将其值设定为日期调整后或者调整前,第一个符合指定条件(这里使用了星期一举例))要求的日期,如果该日期已经符合要求,直接返回该对象

注意
后续会慢慢追加,使用到的复杂例子

你可能感兴趣的:(java)