目 录CONTENT

文章目录

Java核心卷(二)日期与时间API

Jinty
2023-12-15 / 0 评论 / 0 点赞 / 14 阅读 / 3594 字

时间线 Instant、Duration类

Instant表示某个时间线上的某个点

Duration是两个时刻之间的时间量

public static void main(String[] args) throws InterruptedException {

    System.out.println(Instant.MAX);
    System.out.println(Instant.MIN);

    Instant start = Instant.now();
    System.out.println(start);
    System.out.println(start.getNano());

    Thread.sleep(1000);

    Instant end = Instant.now();
    System.out.println(end);
    System.out.println(end.getNano());

    System.out.println(Duration.between(start, end).getNano());
    System.out.println(Duration.between(start, end).getSeconds());

}

本地日期 LocalDate

public static void main(String[] args) throws InterruptedException {
    LocalDate start = LocalDate.now();
    System.out.println(start);
    System.out.println(start.getYear() + " " + start.getMonthValue() + " " + start.getDayOfMonth());
    System.out.println("星期" + start.getDayOfWeek().getValue());
    System.out.println("一年已过:" + start.getDayOfYear());


    LocalDate end = LocalDate.of(2021, 6, 14);
    end = LocalDate.of(2021, Month.JUNE, 14).plusDays(30);
    System.out.println(end);

    Period period = Period.between(start, end);
    System.out.println(period.getYears() + " " + period.getMonths() + " " + period.getDays());

    System.out.println(start.until(end));
    System.out.println(start.until(end, ChronoUnit.DAYS));
}

日期调制器 - TemporalAdjusters

 public static void main(String[] args) throws InterruptedException {
        LocalDate now = LocalDate.now();
        System.out.println("now:" + now + ", week:" + now.getDayOfWeek().getValue());

        LocalDate previousFriday = now.with(TemporalAdjusters.previous(DayOfWeek.FRIDAY));
        System.out.println("previous friday:" +previousFriday);

        LocalDate nextFriday = now.with(TemporalAdjusters.next(DayOfWeek.FRIDAY));
        System.out.println("next friday:" + nextFriday);

        LocalDate lastFridayInMonth = now.with(TemporalAdjusters.lastInMonth(DayOfWeek.FRIDAY));
        System.out.println("last friday in month:" + lastFridayInMonth);

        LocalDate secondFridayInMonth = now.with(TemporalAdjusters.dayOfWeekInMonth(2,DayOfWeek.FRIDAY));
        System.out.println("second friday in month:" + secondFridayInMonth);

        LocalDate lastDate = now.with(TemporalAdjusters.lastDayOfMonth());
        System.out.println("last date of month:" + lastDate);

        LocalDate firstDateNextMonth = now.with(TemporalAdjusters.firstDayOfNextMonth());
        System.out.println("first date next month:" + firstDateNextMonth);
    }

本地时间 LocalTime

与LocalDate很接近

格式化 DateTimeFormatter

System.out.println(DateTimeFormatter.ISO_DATE.format(now));
System.out.println(DateTimeFormatter.ofLocalizedDate(FormatStyle.valueOf("LONG")).format(now));
System.out.println(DateTimeFormatter.ofPattern("yyyy-MM:dd").format(now));

转换

System.out.println(LocalDateTime.ofInstant(new Date().toInstant(), ZoneId.systemDefault()));

0

评论区