JAVA java8 日期、时间操作(java8全新日期时间处理)
一、日期
1.获取当天日期
(Java 8中的 LocalDate 用于表示当天日期。和java.util.Date不同,它只有日期,不包含时间。))
LocalDate date = LocalDate.now();
System.out.println("当前日期=" + date);
2.构造指定日期
( LocalDate.of()创建任意日期, 该方法需要传入年、月、日做参数,返回对应的LocalDate实例。)
LocalDate date2 = LocalDate.of(2020, 1, 1);
System.out.println("2020年=" + date2);
3.获取年月日信息
LocalDate date3 = LocalDate.now();
System.out.printf("年=%d,月=%d,日=%d", date3.getYear(), date3.getMonthValue(), date3.getDayOfMonth());
System.out.print("\n");
4.比较两个日期是否相等
LocalDate now = LocalDate.now();
LocalDate date4 = LocalDate.of(2020, 1, 1);
System.out.println("日期是否相等=" + now.equals(date4));
二、时间
获取当前时间
(Java 8中的 LocalTime 用于表示当天时间。和java.util.Date不同,它只有时间,不包含日期。)
LocalTime time = LocalTime.now();
System.out.println("当前时间=" + time);
三、日期与时间
当前日期与时间
LocalDateTime dateTime = LocalDateTime.now();
System.out.println("当前日期与时间=" + dateTime.format(formatter));
四、比较与计算
1.日期时间计算
(Java8提供了新的plusXxx()方法用于计算日期时间增量值,替代了原来的add()方法。新的API将返回一个全新的日期时间示例,需要使用新的对象进行接收。)
LocalTime time2 = LocalTime.now();
LocalTime newTime = time2.plusHours(2);
System.out.println("newTime=" + newTime);//时间增量
LocalDate date5 = LocalDate.now();
LocalDate newDate = date5.plusDays(2);
System.out.println("newDate=" + newDate);//日期增量
2.日期时间比较
(Java8提供了isAfter()、isBefore()用于判断当前日期时间和指定日期时间的比较)
LocalDate now2 = LocalDate.now();
LocalDate date6 = LocalDate.of(2020, 1, 1);
if (now2.isAfter(date6)) {
System.out.println("2019已经过去了");
}
LocalDate future = LocalDate.of(2023, 1, 1);
if (now2.isBefore(future)) {
System.out.println("2023年还没来");
}
五、时区
创建带有时区的日期时间(Java 8不仅分离了日期和时间,也把时区分离出来了。现在有一系列单独的类如ZoneId来处理特定时区,ZoneDateTime类来表示某时区下的时间。)
ZoneId shanghaiZoneId = ZoneId.of("Asia/Shanghai");
ZonedDateTime shanghaiZonedDateTime = ZonedDateTime.now(shanghaiZoneId);//上海时间
ZoneId tokyoZoneId = ZoneId.of("Europe/Madrid");
ZonedDateTime madridZonedDateTime = ZonedDateTime.now(tokyoZoneId);//西班牙时间
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
System.out.println("上海时间: " + shanghaiZonedDateTime.format(formatter));
System.out.println("西班牙时间: " + madridZonedDateTime.format(formatter));