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

    xiaoxiao2023-10-31  168

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

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

    最新回复(0)