时间线 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()));
评论区