写点什么

16.  《重学 JAVA》--1.8 新日期类

作者:杨鹏Geek
  • 2021 年 12 月 17 日
  • 本文字数:815 字

    阅读完需:约 3 分钟

16.  《重学JAVA》--1.8新日期类

一、日期类

Java 8 在 java.time 包下提供了很多新的 API。

以下为比较重要的 API:

Local(本地):简化了日期时间的处理,没有时区的问题。

Zoned(时区):通过制定的时区处理日期时间。 具体的 API:

LocalDate:存储不包含时间的日期,比如 2020-01-11。可以用来存储生日,周年纪念日,入职日期,表示一个不可变对象。

LocalTime:存储不包含日期的时间,比如 11:07:03.580,表示一个不可变对象。

LocalDateTime:获取年月日时分秒,表示一个不可变的日期和时间

新的 java.time 包涵盖了所有处理日期,时间,日期/时间,时区,时刻(instants),过程(during)与时钟(clock)的操作。

二、日期类的特点

 

Java 8 中新的时间与日期 API 中的所有类都是不可变且线程安全的,这与之前的 Date 与 Calendar API 中的恰好相反,那里面像 java.util.Date 以及 SimpleDateFormat 这些关键的类都不是线程安全的。

新的时间与日期 API 中很重要的一点是它定义清楚了基本的时间与日期的概念,比方说,瞬时时间,持续时间,日期,时间,时区以及时间段。

 

这个库的主包是 java.time,里面包含了代表日期,时间,瞬时以及持续时间的类。它有两个子 package,一个是 java.time.foramt,这个是什么用途就很明显了,还有一个是 java.time.temporal,它能从更低层面对各个字段进行访问。

 

时区指的是地球上共享同一标准时间的地区。每个时区都有一个唯一标识符,同时还有一个地区/城市(Asia/Tokyo)的格式以及从格林威治时间开始的一个偏移时间。比如说,东京的偏移时间就是+09:00。

 

OffsetDateTime 类实际上包含了 LocalDateTime 与 ZoneOffset。它用来表示一个包含格林威治时间偏移量(+/-小时:分,比如+06:00 或者-08:00)的完整的日期(年月日)及时间(时分秒,纳秒)。

 

DateTimeFormatter 类用于在 Java 中进行日期的格式化与解析。与 SimpleDateFormat 不同,它是不可变且线程安全的,如果需要的话,可以赋值给一个静态变量。DateTimeFormatter 类提供了许多预定义的格式器,你也可以自定义自己想要的格式。

 

发布于: 1 小时前阅读数: 6
用户头像

杨鹏Geek

关注

你必须比别人更努力 才能看起来毫不费力! 2019.10.26 加入

码农

评论

发布
暂无评论
16.  《重学JAVA》--1.8新日期类