Java SimpleDateFormat

2025年3月17日 | 阅读 12 分钟

java.text.SimpleDateFormat 类提供了在 Java 中格式化和解析日期和时间的方法。SimpleDateFormat 是用于格式化和解析日期的具体类,它继承了 Java.text.DateFormat 类。

请注意,这里的格式化意味着将日期转换为字符串,而解析意味着将字符串转换为日期。

SimpleDateFormat 类的构造函数

1. SimpleDateFormat(String pattern_args)

此构造函数创建一个具有指定日期和时间模式的 SimpleDateFormat 对象。 该模式由表示日期和时间的不同组成部分的各种符号组成(例如,“dd/MM/yyyy”表示日/月/年)。 使用默认区域设置的默认日期格式符号。

2. SimpleDateFormat(String pattern_args, Locale locale_args)

与第一个构造函数类似,但允许指定用于本地化的区域设置。 这意味着您可以根据特定区域设置的约定(例如语言和文化差异)来格式化日期。

3. SimpleDateFormat(String pattern_args, DateFormatSymbols formatSymbols)

此构造函数允许我们指定一组日期格式符号。 DateFormatSymbols 封装了本地化的日期时间格式化数据,例如月份和日期名称。 它提供了自定义格式化行为的灵活性。

格式化和解析

格式化

根据指定的模式将 Date 对象转换为字符串表示形式。 这是通过使用 SimpleDateFormat 的 format(Date date) 方法来实现的。

解析

将日期的字符串表示形式转换为 Date 对象。 这是通过使用 SimpleDateFormat 的 parse(String source) 方法来完成的。 如果输入字符串与指定的日期格式不匹配,则 parse 方法会抛出 ParseException。

Java SimpleDateFormat 示例:日期到字符串

让我们看一个使用 java.text.SimpleDateFormat 类在 Java 中格式化日期的例子。

示例 1

SimpleDateFormatExample1.java

立即测试

输出

19/02/2024

说明

该代码初始化一个 Date 对象来表示当前的日期和时间。然后,它创建一个模式为 "DD/MM/YYYY" 的 SimpleDateFormat 对象来指定所需的日期格式。接下来,使用 format() 方法将 Date 对象转换为遵循指定模式的字符串表示形式。生成的格式化日期字符串存储在变量 strDate 中,然后将其打印到控制台。

示例 2

第二个示例使用 SimpleDateFormat 类的不同模式提供了多个日期格式选项。它展示了各种日期格式,包括月/日/年、日-月-年带时间、日-月 年带完整月份名称、日-月 年带时区以及日期名称带完整日期和时间。

SimpleDateFormatExample2.java

立即测试

输出

Date Format with MM/dd/yyyy : 04/13/2015
Date Format with MM/dd/yyyy : 02/19/2024
Date Format with dd-M-yyyy hh:mm:ss : 19-2-2024 05:43:00
Date Format with dd MMMM yyyy : 19 February 2024
Date Format with dd MMMM yyyy zzzz : 19 February 2024 Greenwich Mean Time
Date Format with E, dd MMM yyyy HH:mm:ss z : Mon, 19 Feb 2024 17:43:00 GMT

说明

在此示例中,代码初始化一个 Date 对象来表示当前的日期和时间。然后,它创建多个具有不同模式的 SimpleDateFormat 实例,以演示各种日期和时间格式化选项。每个 SimpleDateFormat 实例都使用 format() 方法根据其指定的模式将 date 对象格式化为字符串。最后,将每个模式的格式化日期字符串打印到控制台。输出以不同的格式显示日期和时间,例如 "MM/dd/yyyy"、"dd-M-yyyy hh:mm:ss"、"dd MMMM yyyy"、"dd MMMM yyyy zzzz" 和 "E, dd MMM yyyy HH:mm:ss z"。

Java SimpleDateFormat 示例:字符串到日期

以下示例展示了如何使用 SimpleDateFormat 类在 Java 中将日期的字符串表示形式转换为 Date 对象。它说明了将格式为 "dd/MM/yyyy" 的字符串解析为 Date 对象的过程。

StringToDate.java

输出

Date is: Sun Mar 31 00:00:00 GMT 2024

说明

此示例演示了如何使用 SimpleDateFormat 类的 parse() 方法将日期的字符串表示形式转换为 Date 对象。 SimpleDateFormat 对象是使用模式 "dd/MM/yyyy" 创建的,该模式与输入字符串 "31/03/2015" 的格式匹配。在 try 块中,使用 parse() 方法将字符串解析为 Date 对象,然后将其打印到控制台。

SimpleDateFormat 类的方法

1. set2DigitYearStart()

Java 的 SimpleDateFormat 类中的 set2DigitYearStart() 方法用于指定解释两位数年份的开始日期。其目的是定义一个参考点,两位数年份将从中计算。该方法允许自定义在日期解析期间如何解释两位数年份。

语法

参数

startDate: 在 startDate 到 startDate + 100 年的范围内设置的日期。

返回值

该方法返回类型为 void。

Set2DigitYearStart.java

输出

Initial Timing is : Fri Nov 12 00:00:00 GMT 2021
The New Timing is : Mon Feb 02 00:00:00 GMT 2015

说明

此 Java 程序初始化一个 SimpleDateFormat 对象,以使用模式 "MM/dd/yy" 格式化日期。然后,它创建一个 Calendar 实例,将其时间设置为 2021 年 11 月 12 日,并打印初始计时。随后,它使用 set2DigitYearStart() 方法将解释两位数年份的开始年份调整为 2000。之后,它解析另一个日期字符串 ("02 / 02 / 15") 并在 Calendar 对象中设置其值。

2. get2DigitYearStart()

get2DigitYearStart() 方法对于检索先前使用 set2DigitYearStart() 方法设置的开始日期非常有用。 它允许开发人员验证或检查用于在日期解析期间解释两位数年份的参考点。 它提供透明度并有助于了解如何在指定日期范围内解释两位数年份。

语法

参数

此方法不需要任何参数。

返回值

Date: 该方法返回一个 Date 对象,表示在解析期间设置的 100 年期间的开始。 此日期指示从中计算两位数年份的参考点。

Get2DigitYearStart.java

输出

Initial Timing is : Fri Nov 12 00:00:00 GMT 2021
The New Timing is : Mon Feb 02 00:00:00 GMT 2015
The start year is: 2000

说明

为了格式化日期,此 Java 程序使用模式 "MM / dd / yy" 初始化一个 SimpleDateFormat 对象。 接下来,使用解析的日期,它创建一个 Calendar 实例并将其时间设置为 2021 年 11 月 12 日。 接下来,它使用 set2DigitYearStart() 方法将开始年份更改为 2000,以便理解两位数年份。 然而,此修改不会立即反映在日历对象的打印输出中。 相反,它打印开始计时,然后使用 get2DigitYearStart() 方法尝试获取开始年份。 接下来,制作检索到的开始年份的打印输出以验证指定的开始年份。

3. toPattern()

SimpleDateFormat 实例使用的日期格式模式由 toPattern() 函数返回。 当使用 SimpleDateFormat 对象解析或格式化日期时,此模式确定日期和时间的格式化方式。

模式元素

构成 toPattern() 提供的模式的各个模式字母充当日期的各个部分的占位符和时间。 作为一个例子

  • M: 一年中的月份
  • d: 月份中的天数
  • yy: 两位数年份
  • h: AM/PM 中的小时 (1-12)
  • mm: 分钟数 a 中的小时:AM/PM 标记

语法

参数

此方法不需要任何参数

返回值

该方法返回类型为 String,并返回日期格式模式。

ToPattern.java

输出

Current Date : 12/11/21, 7:24 AM
The Date Pattern is: M/d/yy, h:mm a

说明

提供的 Java 代码定义了一个名为 ToPattern 的类,它有一个 main 函数。 当在 main 方法中实例化 SimpleDateFormat 对象时,使用 Calendar 对象获取当前日期和时间,而没有任何定义的日期格式模式。 它使用 SimpleDateFormat 对象来格式化当前日期和时间,然后将其打印出来。 它还通过调用 SimpleDateFormat 对象的 toPattern() 函数来检索用于格式化日期的日期格式模式并将其打印出来。 输出以 "M/d/yy, h:mm a" 格式显示当前的时间和日期,以及日期的匹配模式。

4. parse()

Java 的 SimpleDateFormat 类中的 parse() 方法用于根据 SimpleDateFormat 实例指定的格式将日期的字符串表示形式解析为 Date 对象。

语法

参数

此方法不需要任何参数

返回值

该方法返回类型为 Date,并返回已解析的日期。

实施

让我们看看如何使用代码实现该方法。

FileName: Parse.java

输出

Initial Timing is : Fri Nov 12 00:00:00 GMT 2021

说明

代码使用模式 "MM / dd / yy" 初始化一个 SimpleDateFormat 对象。 然后尝试将字符串 "11 / 12 / 21" 解析为日期对象。 如果成功,则打印出初始计时,并将已解析的数据存储在 Calendar 对象中。 已解析的日期在输出中显示为 "Fri Nov 12 00:00:00 GMT 2021"。

5. applyPattern()

要将新的日期和时间模式应用于 Java 中已存在的 SimpleDateFormat 对象,请利用 SimpleDateFormat 类的 apply pattern () 方法。 它使程序员能够更改在动态解析和格式化日期和时间时应用的格式化模式。

语法

参数

此方法不需要任何参数

返回值

该方法返回类型为 void。

FileName: ApplyPattern.java

输出

The current date is: 11 / 12 / 2021 07:41 +0000
The Pattern applied is: dd / MM / yyyy HH:mm Z

说明

提供的 Java 代码示例展示了如何使用 applyPattern() 函数自定义日期和时间格式。 为了处理日期和时间,它首先导入所需的包。 ApplyPattern 类的 main 方法首先初始化一个 SimpleDateFormat 对象,而无需传递初始模式。 为了记录当前的日期和时间,它还检索一个 Calendar 的实例。 接下来,使用 applyPattern() 方法,代码创建一个名为 "dd / MM / yyyy HH: mm Z" 的自定义日期格式模式,并将其应用于 SimpleDateFormat 对象。 它打印格式化的日期以及通过使用此模式格式化当前日期和时间后应用的模式。

6. format()

Java 中的 format() 方法是基于预定义模式格式化日期的基本工具,它包含在 SimpleDateFormat 类中。 借助此技术,开发人员可以将 Date 对象转换为人类可读的字符串,其格式满足特定需求,包括根据区域习俗或样式显示日期。

语法

参数

该方法将 Date 作为参数。

返回值

该方法返回类型为 String,该方法返回日期的格式化字符串。

Format.java

输出

The actual date is: Fri Feb 23 09:56:50 GMT 2024
The formatted date is: 2/23/24, 9:56 AM

说明

Java 的 format() 方法,它是 SimpleDateFormat 类的一个成员,用于根据模式将 Date 对象格式化为字符串表示形式。 该方法接受 Date 对象作为输入,并输出一个 String,该字符串是格式化日期。 提供的示例代码创建一个 SimpleDateFormat 实例,并使用从 Calendar 对象检索的当前日期调用 format() 方法。 然后,将生成的格式化日期字符串打印到控制台。

7. toLocalizedPattern()

SimpleDateFormat 类的 toLocalizedPattern() 方法用于返回一个本地化的模式格式化字符串,用于描述此日期格式。 换句话说,特定的日期被转换为本地模式,例如 M/d/yy h:mm。

语法

参数

该方法不接受任何参数

返回值

该方法返回类型为 String,该方法返回日期格式化程序的 Date 模式字符串。

ToLocalizedPattern.java

输出

The Date is: 2/23/24, 10:04 AM
The pattern in the DateFormater is : M/d/yy, h:mm a

说明

提供的代码示例说明了如何创建 SimpleDateFormat 的一个实例,然后调用 toLocalizedPattern() 方法来获取日期格式化程序应用的模式字符串。 基于系统设置或区域设置选项,此模式字符串表示日期格式化程序使用的格式。 通过使用此方法(特别是对于动态获取模式字符串而不是对其进行硬编码),可以使日期格式化更加灵活和自适应。

结论

总而言之,Java SimpleDateFormat 类为日期和时间提供了强大的格式化和解析能力。开发人员可以使用其众多的构造函数自定义日期格式,以适应独特的模式和位置,从而满足各种语言和文化偏好。可以使用 format() 函数将 Date 对象转换为格式化的字符串,而可以使用 parse() 方法将文本表示转换为 Date 对象。为了进一步提高 Java 应用程序中日期处理的灵活性和实用性,开发人员可以使用诸如 toPattern() 和 toLocalizedPattern() 之类的方法来分析和提取应用的格式化模式。 综上所述,SimpleDateFormat 类使 Java 中的日期和时间处理更加容易,提高了可读性,并且更容易根据各种本地化需求进行修改。