java 8中除了Lambda表达式,Stream流等新特性,还有新的日期时间API,为什么会引入新的日期处理API呢?旧的日期处理类,线程不安全,而且对于时区处理起来非常的麻烦。因此java 8 在java.time包下增加了很多新的API,主要包括Local(本地,简化了日期时间的处理,没有时区的问题)和Zoned(时区,通过制定的时区处理日期时间)。
具体怎么用,简单举几个例子吧。
//本地APILocalDateTime currentime = LocalDateTime.now();System.out.println("当前时间:"+currentime);LocalDate date1 = currentime.toLocalDate();System.out.println("当前日期的年月日:"+ date1);LocalTime time1 = currentime.toLocalTime();System.out.println("当前日期的时分秒:"+time1);LocalDateTime updateDate = currentime.withDayOfMonth(10).withMonth(9).withYear(2018);System.out.println("修改后的日期:"+updateDate);LocalDate date2 = LocalDate.of(2017,Month.DECEMBER,12);System.out.println("自定义一个日期:"+date2);LocalTime time2 = LocalTime.of(12,34,56);System.out.println("自定义时分秒:"+time2);LocalTime time3 = LocalTime.parse("10:23:45");System.out.println("字符串转换为时间:"+time3);//时区APIZonedDateTime zoneDate = ZonedDateTime.now();System.out.println("带有时区的日期:"+zoneDate);ZoneId id = ZoneId.systemDefault();System.out.println("获取默认时区:"+id);ZoneId updateId = ZoneId.of("Europe/Paris");System.out.println("自定义时区:"+updateId);结果:当前时间:2020-08-17T22:31:21.686当前日期的年月日:2020-08-17当前日期的时分秒:22:31:21.686修改后的日期:2018-09-10T22:31:21.686自定义一个日期:2017-12-12自定义时分秒:12:34:56字符串转换为时间:10:23:45带有时区的日期:2020-08-17T22:31:21.706+08:00[Asia/Shanghai]获取默认时区:Asia/Shanghai自定义时区:Europe/Paris
有关日期的方法还有很多,就不一一举例了,大家可以自己看源码学习。