Java8新特性 - Date Time API

Louis2020-08-06Java技术JavaJava8

Java8发布了全新的日期时间相关API,增强了对日期和时间的处理。

先来看看Java8之前的API存在哪些问题。

旧版日期时间API的问题

  1. 非线程安全。java.util.Date是非线程安全的,且日期类是可变的
  2. 有两个日期类。在java.util和java.sql的包中都有日期类,且java.util.Date同时包含日期和时间,而java.sql.Date仅包含日期,还有一个java.sql.Time仅包含时间,后两者都是前者的子类,这样的设计很不合理
  3. 日期与字符串的转换问题。日期类自身不能直接转换成字符串,需要借助java.text包,且java.text.SimpleDateFormat还是非线程安全的
  4. 日期的计算和处理。几乎不具备时间计算与处理能力,需要借助java.util.Calendar

Java8的日期时间API

在Java8中,所有时间日期相关的API都封装在java.time包内

常用的类有:

类含义
LocalDate不带时区的日期
LocalTime不带时区的时间
LocalDateTime不带时区的日期+时间
ZonedDateTime带时区的日期+时间
Month月份的枚举值
DayOfWeek星期的枚举值
Instant时刻
Duration一段时间,例如34.5s
Clock带时区的时钟

示例

Last Updated 2024/11/24 20:50:53