1、简要说明
在日常开发中,我们经常会遇到一个问题:将时间格式化显示。这个处理的目的就是,将Java中时间类型的对象转换为指定的格式字符串。比如:将当前时间,按照 xxxx年xx月xx日 这样的格式显示。
这时候,肯定有人会问,那Java为什么不一开始就按这些格式显示呢?因为,现代计算机是由西方国家发明的,所以默认是按照西方国家的时间格式显示。如下图:

在Java语言中,不同的时间类型,它转换的过程也是不一样的。在介绍具体API调用方式前,我们先介绍下Java中几种常见的时间类型。
2、常见的一些时间类型介绍
java.util.Date 这是一个较为古老的Java时间类型。Date 类表示特定的时刻,精度为毫秒。它很多处理函数已经不建议使用。
java.util.Calendar 是 Java 中的一个抽象类,提供了一系列操作日历字段(如年、月、日、小时等)的方法。它允许开发者对日期和时间进行转换处理,支持多种日历系统。
java.sql.Timestamp 这是一个常用于数据库JDBC时间处理的类型。它是java.util.Date 的精简包装器,允许 JDBC API 将其标识为 SQL TIMESTAMP 值。它通过允许将小数秒的规范规范到纳秒的精度,增加了保存 SQL TIMESTAMP 小数秒值的能力。Timestamp 还提供格式化和解析操作,以支持时间戳值的 JDBC 转义语法。
java.time.LocalDate 是Java 8中引入的一个不可变的日期类,用于表示ISO-8601日历系统中的日期,如年、月、日。它不包含时间信息和时区数据。这个类是Java时间日期API的一部分,旨在替代旧的 java.util.Date 和 java.util.Calendar。
java.time.LocalDateTime 是Java 8中引入的一部分新的日期时间API,它代表了一个不带时区信息的日期和时间。这个类是不可变且线程安全的,提供了一种处理日期和时间的现代化方法。
以上类型的默认时间格式如下:


3、关于时间格式转换的处理
在Java中,对于时间格式化,一般是使用 java.text.SimpleDateFormat 类来处理的。但是,有一点要注意的是,这个类是非线程安全的。高并发下,可能出现问题。这工具类,在以后,我们会升级为线程安全的。下面,我们使用一个简单的示例,来说明 SimpleDateFormat 如何使用:

4、工具包中的API调用说明
在工具包中,提供了几种类型的时间格式化处理。现在我们对每一种举例说明。
4.1、两种默认的时间格式

在工具类中,自带了2种不同的格式化信息,带毫秒数 和 不带毫秒数。在获取默认时间字符串时,都是调用这2个值的。大家可以参考源码,看看实现方式
4.2、获取默认的时间(年月日,不带毫秒)


4.3、获取默认的时间(年月日,带毫秒)


4.4、获取自定义时间信息


4.5、将 LocalDateTime 转 Timestamp


本章节完结。