11. Java8-日期API-简介

x33g5p2x  于2021-12-18 转载在 其他  
字(1.3k)|赞(0)|评价(0)|浏览(357)

Java8 提供了一组新的API, 全部位于java.time.* 包下. 主要有LocalDate, LocalTime, LocalDateTime, Instant, Period, Duration,DateTimeFormatter, ZoneDate,ZoneDateTime 等类.

1. Local*

Java8 中的 LocalDate, LocalTime, LocalDateTime 类的实例均为不可变对象, 类似于String 一样, 换句话而言就是线程安全的. 分别用于表示ISO-8601 日历系统的时间, 日期, 时间和日期, 它们只包含了时间相关的基本信息, 而不包括时区的相关信息. 它们的API 比较相似, 常用API 如下:

常用API描述
now获取当前日期, 时间, 日期时间的实例
of*根据指定日期,时间获取实例
parse根据字符串和时间格式解析器来获取实例
get*获取时间日期具体的时,分,秒,毫秒,纳秒…
get/getLong(ChronoField.*)获取今天是本周, 本月, 本年第几天等常见操作
plus*/minus*对时间日期进行年月日,时分秒的计算, 获取新的时间日期实例
plus(Period.)/minus(Period.)更通用的对时间年月日,时分秒的计算, 获取信道 时间日期实例
with*根据当前日期, 修改具体的年月日,时分秒,以获取新的日期
with(TemporalAdjusters.*)获取如下一个周五, 下月第一天, 下一个工作日等常见的日期时间
until计算日期时间之间的间隔
at*将时间日期转换为时间日期

2. Instant

Instat 是用于时间戳的计算, 它是表示距Unix元年(UTC时区1970.01.01 午夜时分)经历的时间.

3. DateTimeFormatter

DateTimeFormatter 为时间日期格式化解析器, 用于约定字符串和时间日期之间相互转换的格式.该类提供了是三种格式化方法,最常用的还是自定义方式:

  • 预定义的标准格式
  • 语言环境相关的格式
  • 自定义的格式

4. Duration,Period

Duration 用于计算两个日期(LocalDate)之间的时间间隔, Period 用于计算两个时间(LocalTime) 之间的时间间隔.

5. ZonedDateTime

java8 加入了对时区的支持, 提供了包含时区的时间类ZonedDateTime . 除了时间包含时区信息之外, 此日期API 与LocalDateTime 基本无异. 每个时区都拥有自己的zoneId, ZoneId 格式为 {区域}/{城市}, 如 Asia/Shanghai.

6. 与传统日期转换.

新型日期API 与传统API 直接的转换, 可通过传统API 的from 或 valueOf 方法进行转换.或者直接获取对应年月日构造即可.

转换代码
LocalDate -> java.util.DateDate.valueOf(LocalDate)
LocalDateTime -> java.sql.TimeStampTimeStamp.valueOf(LocalDateTime)

相关文章