深入了解 JDK8 LocalDateTime/LocalDate/LocalTime 相互转换
基本用法
public void localDateTime() {
LocalDate localDate = LocalDate.now();
System.out.println("LocalDate==》" + localDate);
System.out.println("getDayOfMonth==》" + localDate.getDayOfMonth());
System.out.println("getChronology==》" + localDate.getChronology());
System.out.println("getDayOfWeek==》" + localDate.getDayOfWeek());
System.out.println("getDayOfYear==》" + localDate.getDayOfYear());
System.out.println("getEra==》" + localDate.getEra());
System.out.println("getMonth==》" + localDate.getMonth());
System.out.println("getMonthValue==》" + localDate.getMonthValue());
System.out.println("getYear==》" + localDate.getYear());
System.out.println("parse string 转换为 LocalDate ==》" + LocalDate.parse("2020-10-10"));
System.out.println("format LocalDate 转换为 string ==》" + localDate.format(DateTimeFormatter.ofPattern("yyyy-MM")));
System.out.println("format LocalDate 转换为 string ==》" + localDate.toString());
System.out.println("plusDays 明天 ==》" + localDate.plusDays(1));
System.out.println("plusMonths 下个月 ==》 " + localDate.plusMonths(1));
System.out.println("plusWeeks 下一周 ==》 " + localDate.plusWeeks(1));
System.out.println("plusYears 下一年 ==》 " + localDate.plusYears(1));
System.out.println("minusDays 昨天==》" + localDate.minusDays(1));
System.out.println("minusMonths 上个月==》 " + localDate.minusMonths(1));
System.out.println("minusWeeks 上一周==》 " + localDate.minusWeeks(1));
System.out.println("minusYears 上一年 ==》 " + localDate.minusYears(1));
LocalTime localTime = LocalTime.now();
System.out.println("LocalTime——》" + localTime);
System.out.println("getHour==》" + localTime.getHour());
System.out.println("getMinute==》" + localTime.getMinute());
System.out.println("getNano==》" + localTime.getNano());
System.out.println("getSecond==》" + localTime.getSecond());
System.out.println("toNanoOfDay==》" + localTime.toNanoOfDay());
System.out.println("toSecondOfDay==》" + localTime.toSecondOfDay());
System.out.println("parse==》" + LocalTime.parse("20:10:10"));
System.out.println("format==》" + localTime.format(DateTimeFormatter.ofPattern("hh:mm:ss")));
System.out.println("plusHours==》" + localTime.plusHours(1));
System.out.println("plusMinutes==》" + localTime.plusMinutes(1));
System.out.println("plusNanos==》" + localTime.plusNanos(1));
System.out.println("plusSeconds==》" + localTime.plusSeconds(1));
System.out.println("minusHours==》" + localTime.minusHours(1));
System.out.println("minusMinutes==》" + localTime.minusMinutes(1));
System.out.println("minusNanos==》" + localTime.minusNanos(1));
System.out.println("minusSeconds==》" + localTime.minusSeconds(1));
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println("localDateTime==》" + localDateTime);
System.out.println("getDayOfMonth==》" + localDateTime.getDayOfMonth());
System.out.println("getChronology==》" + localDateTime.getChronology());
System.out.println("getDayOfWeek==》" + localDateTime.getDayOfWeek());
System.out.println("getDayOfYear==》" + localDateTime.getDayOfYear());
System.out.println("getMonth==》" + localDateTime.getMonth());
System.out.println("getMonthValue==》" + localDateTime.getMonthValue());
System.out.println("getYear==》" + localDateTime.getYear());
System.out.println("parse==》" + LocalDateTime.parse("2021-05-31T20:04:18.764"));
System.out.println("format==》" + localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss")));
System.out.println("plusSeconds->" + localDateTime.plusSeconds(1));
System.out.println("plusMinutes->" + localDateTime.plusMinutes(1));
System.out.println("plusHours->" + localDateTime.plusHours(1));
System.out.println("plusDays->" + localDateTime.plusDays(1));
System.out.println("plusWeeks->" + localDateTime.plusWeeks(1));
System.out.println("plusMonths->" + localDateTime.plusMonths(1));
System.out.println("plusYears->" + localDateTime.plusYears(1));
System.out.println("minusSeconds->" + localDateTime.minusSeconds(1));
System.out.println("minusMinutes->" + localDateTime.minusMinutes(1));
System.out.println("minusHours->" + localDateTime.minusHours(1));
System.out.println("minusDays->" + localDateTime.minusDays(1));
System.out.println("minusWeeks->" + localDateTime.minusWeeks(1));
System.out.println("minusMonths->" + localDateTime.minusMonths(1));
System.out.println("minusYears->" + localDateTime.minusYears(1));
}
获取年月周天的最大最小日期
public void maxAndMinDate() {
LocalDate localDate = LocalDate.now();
DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
Calendar calendar = Calendar.getInstance();
calendar.setTime(Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant()));
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
int i = calendar.get(Calendar.WEEK_OF_MONTH);
String maxDay = LocalDateTime.of(localDate, LocalTime.MAX).format(timeFormatter);
System.out.println("maxDay:" + maxDay);
String minDay = LocalDateTime.of(localDate, LocalTime.MIN).format(timeFormatter);
System.out.println("minDay:" + minDay);
String maxWeek = LocalDateTime.of(localDate.with(TemporalAdjusters.dayOfWeekInMonth(i, DayOfWeek.SUNDAY)),
LocalTime.MAX).format(timeFormatter);
System.out.println("maxWeek:" + maxWeek);
String minWeek = LocalDateTime.of(localDate.with(TemporalAdjusters.dayOfWeekInMonth(i - 1, DayOfWeek.MONDAY)),
LocalTime.MIN).format(timeFormatter);
System.out.println("minWeek:" + minWeek);
String maxMonth = LocalDateTime.of(localDate.with(TemporalAdjusters.lastDayOfMonth()), LocalTime.MAX).format(timeFormatter);
System.out.println("maxMonth:" + maxMonth);
String minMonth = LocalDateTime.of(localDate.with(TemporalAdjusters.firstDayOfMonth()), LocalTime.MIN).format(timeFormatter);
System.out.println("minMonth:" + minMonth);
String lastDayOfYear = LocalDateTime.of(localDate.with(TemporalAdjusters.lastDayOfYear()), LocalTime.MAX).format(timeFormatter);
System.out.println("lastDayOfYear:" + lastDayOfYear);
String firstDayOfYear = LocalDateTime.of(localDate.with(TemporalAdjusters.firstDayOfYear()), LocalTime.MIN).format(timeFormatter);
System.out.println("firstDayOfYear:" + firstDayOfYear);
}
相互转换
public void conversion() {
ZonedDateTime zonedDateTime = LocalDate.now().atStartOfDay(ZoneId.systemDefault());
Date localDateToDate = Date.from(zonedDateTime.toInstant());
System.out.println("localDateToDate->" + localDateToDate);
ZonedDateTime atZone = LocalDateTime.now().atZone(ZoneId.systemDefault());
Date LocalDateTimeToDate = Date.from(atZone.toInstant());
System.out.println("LocalDateTimeToDate->" + LocalDateTimeToDate);
LocalTime localTime = LocalTime.now();
LocalDate localDate = LocalDate.now();
LocalDateTime localDateTime = LocalDateTime.of(localDate, localTime);
ZoneId zone = ZoneId.systemDefault();
Instant instant = localDateTime.atZone(zone).toInstant();
Date LocalTimeToDate = Date.from(instant);
System.out.println("LocalTimeToDate->" + LocalTimeToDate);
LocalDate toLocalDate = localDateToDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
System.out.println("toLocalDate->" + toLocalDate);
LocalDateTime toLocalDateTime = LocalDateTimeToDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
System.out.println("toLocalDateTime->" + toLocalDateTime);
LocalTime toLocalTime = LocalDateTimeToDate.toInstant().atZone(ZoneId.systemDefault()).toLocalTime();
System.out.println("toLocalTime->" + toLocalTime);
}