Java FormatStyle 枚举
最后修改时间:2025 年 4 月 16 日
java.time.format.FormatStyle
枚举定义了四种日期和时间的格式化风格。这些风格与 DateTimeFormatter
一起使用,用于控制日期和时间的显示方式。该枚举提供了标准化的格式化选项。
FormatStyle
值表示格式化的不同详细程度。它们范围从 full(最详细)到 short(最紧凑)。该枚举主要用于日期和时间的区域设置敏感格式化。
FormatStyle 枚举概述
FormatStyle
枚举包含四个常量:FULL
、LONG
、MEDIUM
和 SHORT
。每种风格在格式化输出中提供不同的详细程度。实际格式因区域设置而异。
public enum FormatStyle { FULL, LONG, MEDIUM, SHORT }
上面的代码展示了 FormatStyle
枚举的简单结构。尽管它很简单,但在日期时间格式化中起着至关重要的作用。这些风格旨在满足应用程序中的常见格式化需求。
FormatStyle.FULL 示例
FULL
提供最详细的格式化,包括星期几、月份、日、年和时区信息。它适用于需要最大清晰度的正式场合。
package com.zetcode; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.time.format.FormatStyle; import java.util.Locale; public class Main { public static void main(String[] args) { LocalDateTime now = LocalDateTime.now(); DateTimeFormatter formatter = DateTimeFormatter .ofLocalizedDateTime(FormatStyle.FULL) .withLocale(Locale.US); String formatted = now.format(formatter); System.out.println("FULL format: " + formatted); } }
此示例演示了使用美国区域设置的 FormatStyle.FULL
。输出包括所有可能的日期和时间组件。确切的格式取决于指定的区域设置。
FormatStyle.LONG 示例
LONG
提供的细节少于 FULL
,但多于 MEDIUM
。它通常包括月份名称、日期、年份和带秒的时间。可能包含或不包含时区。
package com.zetcode; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.time.format.FormatStyle; import java.util.Locale; public class Main { public static void main(String[] args) { LocalDateTime now = LocalDateTime.now(); DateTimeFormatter formatter = DateTimeFormatter .ofLocalizedDateTime(FormatStyle.LONG) .withLocale(Locale.FRANCE); String formatted = now.format(formatter); System.out.println("LONG format (France): " + formatted); } }
此示例显示了使用法国区域设置的 FormatStyle.LONG
。输出比 FULL 更紧凑,但仍然非常可读。注意法语中不同的日期顺序和月份名称。
FormatStyle.MEDIUM 示例
MEDIUM
在细节和紧凑性之间取得平衡。它通常显示缩写的月份名称、数字的日和年以及带秒的时间。这是许多应用程序的常见选择。
package com.zetcode; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.time.format.FormatStyle; import java.util.Locale; public class Main { public static void main(String[] args) { LocalDateTime now = LocalDateTime.now(); DateTimeFormatter formatter = DateTimeFormatter .ofLocalizedDateTime(FormatStyle.MEDIUM) .withLocale(Locale.GERMANY); String formatted = now.format(formatter); System.out.println("MEDIUM format (Germany): " + formatted); } }
此示例演示了使用德国区域设置的 FormatStyle.MEDIUM
。输出比 LONG 更紧凑,但仍然包含关键信息。请注意德国使用的不同日期格式和时间分隔符。
FormatStyle.SHORT 示例
SHORT
提供最紧凑的格式化,主要使用数字值。它适用于空间有限或精确度不关键的情况。
package com.zetcode; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.time.format.FormatStyle; import java.util.Locale; public class Main { public static void main(String[] args) { LocalDateTime now = LocalDateTime.now(); DateTimeFormatter formatter = DateTimeFormatter .ofLocalizedDateTime(FormatStyle.SHORT) .withLocale(Locale.JAPAN); String formatted = now.format(formatter); System.out.println("SHORT format (Japan): " + formatted); } }
此示例显示了使用日本区域设置的 FormatStyle.SHORT
。输出非常紧凑,仅使用数字和最少的分隔符。请注意日本使用的不同日期顺序(年/月/日)。
仅格式化日期
FormatStyle
可用于格式化日期,而无需时间。ofLocalizedDate
方法创建一个忽略时间组件的格式化程序。
package com.zetcode; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.time.format.FormatStyle; import java.util.Locale; public class Main { public static void main(String[] args) { LocalDate today = LocalDate.now(); DateTimeFormatter formatter = DateTimeFormatter .ofLocalizedDate(FormatStyle.LONG) .withLocale(Locale.UK); String formatted = today.format(formatter); System.out.println("Date only (UK): " + formatted); } }
此示例演示了使用 FormatStyle.LONG
和英国区域设置的仅日期格式化。输出包括完整的月份名称,但不包含时间信息。英国格式使用日/月/年顺序。
仅格式化时间
同样,FormatStyle
可以格式化时间,而无需日期。ofLocalizedTime
方法创建一个仅时间格式化程序。
package com.zetcode; import java.time.LocalTime; import java.time.format.DateTimeFormatter; import java.time.format.FormatStyle; import java.util.Locale; public class Main { public static void main(String[] args) { LocalTime now = LocalTime.now(); DateTimeFormatter formatter = DateTimeFormatter .ofLocalizedTime(FormatStyle.MEDIUM) .withLocale(Locale.CANADA_FRENCH); String formatted = now.format(formatter); System.out.println("Time only (French Canada): " + formatted); } }
此示例显示了使用 FormatStyle.MEDIUM
和加拿大法语区域设置的仅时间格式化。输出包括小时、分钟和秒。请注意法语区使用的 24 小时制。
混合 FormatStyles
不同的 FormatStyle
值可以分别用于日期和时间组件。这提供了创建自定义格式的灵活性。
package com.zetcode; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.time.format.FormatStyle; import java.util.Locale; public class Main { public static void main(String[] args) { LocalDateTime now = LocalDateTime.now(); DateTimeFormatter formatter = DateTimeFormatter .ofLocalizedDateTime(FormatStyle.SHORT, FormatStyle.LONG) .withLocale(Locale.ITALY); String formatted = now.format(formatter); System.out.println("Mixed styles (Italy): " + formatted); } }
此示例演示了使用意大利区域设置的日期使用 FormatStyle.SHORT
和时间使用 FormatStyle.LONG
的混合。结果将紧凑的日期与详细的时间格式相结合。
来源
在本文中,我们介绍了 Java FormatStyle
枚举的各个方面。这些格式化选项在 Java 应用程序中提供了灵活的、区域设置感知的日期和时间表示。
作者
列出所有Java教程。