在 Java8 中引入了新的日期类 LocalDateTime ,其主要原因是 Java.util.Date 和 SimpleDateFormatter 都不是线程安全的,而LocalDate和LocalTime和最基本的String一样,是 final 类型,不但线程安全,且不能修改。日期和时间被明确划分为 LocalDate 和 LocalTime ,LocalDate 无法包含时间,LocalTime 无法包含日期,LocalDateTime 才能同时包含日期和时间。
LocalTime 只含时分秒的时间对象
1 2 3
| LocalTime now = LocalTime.now(); System.out.println("当前时间 = " + now);
|
1 2 3
| LocalTime of = LocalTime.of(12, 30, 45); System.out.println("指定时间 = " + of);
|
LocalDate 只含年月日的日期对象
1 2 3
| LocalDate localDateNow = LocalDate.now(); System.out.println("当前日期 = " + localDateNow);
|
1 2 3
| LocalDate localDate = LocalDate.of(2021, 11, 12); System.out.println("指定日期 = " + localDate);
|
LocalDateTime 同时含有年月日时分秒的日期对象
1 2 3
| LocalDateTime now1 = LocalDateTime.now(); System.out.println("当前日期时间 = " + now1);
|
1 2 3
| LocalDateTime of1 = LocalDateTime.of(2021, 11, 12, 12, 30, 45); System.out.println("指定日期时间 = " + of1);
|
1 2 3 4 5 6 7
| String format1 = now1.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); String format2 = now1.format(DateTimeFormatter.ISO_DATE); String format3 = now1.format(DateTimeFormatter.BASIC_ISO_DATE); System.out.println("格式化后时间日期为 = " + format1); System.out.println("格式化后时间日期为 = " + format2); System.out.println("格式化后时间日期为 = " + format3);
|
1 2 3 4 5 6 7 8 9 10 11
| LocalDateTime localDateTime = LocalDateTime.now(); System.out.println("当前时间: " + localDateTime); System.out.println("年: " + localDateTime.getYear()); System.out.println("月: " + localDateTime.getMonth().getValue()); System.out.println("日: " + localDateTime.getDayOfMonth()); System.out.println("时: " + localDateTime.getHour()); System.out.println("分: " + localDateTime.getMinute()); System.out.println("秒: " + localDateTime.getSecond()); System.out.println("减少一年 = " + localDateTime.minusYears(1)); System.out.println("增加一年 = " + localDateTime.plusDays(1)); System.out.println("直接修改年份 = " + localDateTime.withYear(2020));
|
1 2
| LocalDateTime localDateTime1 = LocalDateTime.parse("2022-04-11 14:53:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); System.out.println("反解析 = " + localDateTime1);
|
1
| LocalDateTime localDateTime = instant.atZone(zoneId).toLocalDateTime();
|