欢迎访问宙启技术站
智能推送

使用Java函数将日期格式化为指定格式

发布时间:2023-06-17 16:42:04

日期在日常生活中是不可避免的,我们常常需要使用日期来记录生活的点点滴滴。但是,在不同场合下,日期格式的要求是不同的,不同的场合需要不同的日期格式,这就要求我们灵活掌握日期格式化的方法。

Java是一种强大的编程语言,它提供了很多日期格式化的函数和类,可以轻松地实现日期格式化。在本文中,我们将介绍如何使用Java函数将日期格式化为指定格式。

JDK 8 之前的日期类:

在 JDK 8 之前的 Java 版本中,主要使用 java.util 中的 Calendar 和 Date 类。

其中,Calendar 类可以用于处理日期和时间,它提供了很多常用的日期操作,如获取年月日、小时分秒等。

Date 类则表示特定时刻的日期和时间,它的构造函数可以接受一个 long 类型的参数,它表示自纪元以来的毫秒数。另外,Date 类还提供了很多常用的日期操作,如获取年月日、小时分秒等。

对于 JDK 8 之前的日期类,我们可以使用 SimpleDateFormat 类来将日期格式化为指定的格式。

SimpleDateFormat 是一个非常常用的类,它可以将日期格式化为指定的字符串形式。在使用该类之前,需要先创建一个日期格式模板,它是一个字符串,在其中可以使用以下占位符:

占位符 含义

y 年份

M 月份(不含前导零)

MM 月份(含前导零)

d 日期(不含前导零)

dd 日期(含前导零)

H 小时(24小时制,不含前导零)

HH 小时(24小时制,含前导零)

h 小时(12小时制,不含前导零)

hh 小时(12小时制,含前导零)

m 分钟(不含前导零)

mm 分钟(含前导零)

s 秒(不含前导零)

ss 秒(含前导零)

因此,我们可以通过以下代码将日期格式化为指定的格式:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Date date = new Date();

String formattedDate = formatter.format(date);

System.out.println("Formatted Date: " + formattedDate);

在上面的代码中,我们首先创建了一个 SimpleDateFormat 对象,它的日期格式为 “yyyy-MM-dd HH:mm:ss”,然后我们创建了一个 Date 对象,表示当前日期和时间。最后,我们使用 SimpleDateFormat 的 format() 函数将日期格式化为字符串,然后将其输出到控制台。

以上代码的运行结果如下:

Formatted Date: 2022-11-08 15:14:38

我们也可以使用 SimpleDateFormat 的 parse() 函数将字符串解析为 Date 对象。例如,我们可以使用以下代码将字符串解析为日期:

String dateString = "2022-11-08 15:14:38";

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Date date = formatter.parse(dateString);

在上面的代码中,我们首先创建了一个字符串 dateString,它表示格式化后的日期。然后,我们创建了一个 SimpleDateFormat 对象,并将其日期格式设置为 “yyyy-MM-dd HH:mm:ss”(它与 dateString 的格式一致)。最后,我们使用 SimpleDateFormat 的 parse() 函数将 dateString 解析为一个 Date 对象。

JDK 8 之后的日期类:

在 JDK 8 之后,Java 引入了新的日期类库 java.time,它提供了更加灵活和易于使用的日期和时间处理方式,可以轻松地解决 JDK 8 之前日期类库中存在的一些问题。

java.time 中的基本类都是不可变的,因此可以更安全地在多线程环境下使用。它还提供了丰富的 API,支持流式处理和方法引用等高级特性。另外,它还提供了新的日期和时间格式,可以轻松地实现日期格式化。

在 java.time 中,主要使用以下类:

类 描述

Instant 表示时间戳(自 1970 年 1 月 1 日 00:00 到当前时间的毫秒数)

LocalDate 表示日期(年、月、日)

LocalTime 表示时间(时、分、秒、毫秒)

LocalDateTime 表示日期和时间

ZonedDateTime 表示带时区的日期和时间

其中,LocalDate、LocalTime 和 LocalDateTime 等类都是不可变的,因此可以更安全地在多线程环境下使用。同时,它们还提供了一系列方法,用于处理日期和时间。

对于 java.time 中的日期和时间类,我们可以使用 DateTimeFormatter 类将日期格式化为指定的字符串形式。

DateTimeFormatter 类是 java.time 中的一个重要类,用于格式化和解析日期和时间。使用该类时,需要先实例化一个 DateTimeFormatter 对象并设置日期格式。

我们可以使用 ofPattern() 函数来设置日期格式,它的参数为一个字符串,该字符串表示日期格式。与 SimpleDateFormat 类似,我们可以在其中使用以下占位符:

占位符 含义

y 年份

M 月份(不含前导零)

MM 月份(含前导零)

d 日期(不含前导零)

dd 日期(含前导零)

H 小时(24小时制,不含前导零)

HH 小时(24小时制,含前导零)

h 小时(12小时制,不含前导零)

hh 小时(12小时制,含前导零)

m 分钟(不含前导零)

mm 分钟(含前导零)

s 秒(不含前导零)

ss 秒(含前导零)

因此,我们可以通过以下代码将日期格式化为指定的格式:

LocalDateTime now = LocalDateTime.now();

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

String formattedDate = now.format(formatter);

System.out.println("Formatted Date: " + formattedDate);

在上面的代码中,我们首先使用 LocalDateTime.now() 获取当前日期和时间,并将其存储在 now 变量中。然后,我们创建了一个 DateTimeFormatter 对象,将其日期格式设置为 “yyyy-MM-dd HH:mm:ss”。最后,我们使用 DateTimeFormatter 的 format() 函数将日期格式化为字符串,然后将其输出到控制台。

以上代码的运行结果如下:

Formatted Date: 2022-11-08 15:14:38

我们也可以使用 DateTimeFormatter 的 parse() 函数将字符串解析为日期。例如,我们可以使用以下代码将字符串解析为日期:

String dateString = "2022-11-08 15:14:38";

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

LocalDateTime dateTime = LocalDateTime.parse(dateString, formatter);

在上面的代码中,我们首先创建了一个字符串 dateString,它表示格式化后的日期。然后,我们创建了一个 DateTimeFormatter 对象,并将其日期格式设置为 “yyyy-MM-dd HH:mm:ss”(它与 dateString 的格式一致)。最后,我们使用 DateTimeFormatter 的 parse() 函数将 dateString 解析为一个 LocalDateTime 对象。

使用日期格式化将日期转换为指定格式是非常重要的,在实际开发中也是非常常见的需求。Java 提供了很多函数和类来实现日期格式化,可以轻松地实现日期格式化。在实际开发中,我们需要根据具体的需求选择适当的日期格式化方式,并注意不同 JDK 版本的差异。