Java TextStyle 枚举
最后修改时间:2025 年 4 月 16 日
java.time.format.TextStyle
枚举定义了用于格式化和解析日期-时间文本的文本样式。 它与 DateTimeFormatter
一起使用,以控制文本的显示方式。 该枚举提供了多个格式化选项。
TextStyle
是不可变的和线程安全的。 它通常用于将日期、时间或日期-时间值格式化为字符串。 这些样式范围从全名到短缩写。 该枚举适用于区域设置敏感的文本。
TextStyle 枚举概述
TextStyle
提供了用于不同文本格式化样式的常量。 主要样式包括完整、简短和窄表示形式。 该枚举与 DateTimeFormatterBuilder
一起使用以自定义输出格式。
public enum TextStyle { FULL, FULL_STANDALONE, SHORT, SHORT_STANDALONE, NARROW, NARROW_STANDALONE }
上面的代码显示了 TextStyle
提供的所有常量。 这些值控制日期-时间字符串中的文本格式。 当文本单独出现而不是出现在完整日期中时,使用 STANDALONE 变体。
基本 TextStyle 用法
使用 TextStyle 最简单的方法是使用 DateTimeFormatter。 每种样式都会为同一时间字段产生不同的输出。 该示例显示了月份格式。
package com.zetcode; import java.time.Month; import java.time.format.TextStyle; import java.util.Locale; public class Main { public static void main(String[] args) { Month month = Month.JANUARY; Locale locale = Locale.US; System.out.println("FULL: " + month.getDisplayName(TextStyle.FULL, locale)); System.out.println("SHORT: " + month.getDisplayName(TextStyle.SHORT, locale)); System.out.println("NARROW: " + month.getDisplayName(TextStyle.NARROW, locale)); } }
此示例演示了 Month 枚举的基本 TextStyle 用法。 输出显示了 1 月份的不同文本表示形式。 FULL 给出完整名称,SHORT 给出缩写,NARROW 给出最小表示形式。
独立样式与常规样式
当文本单独出现而不是出现在完整日期中时,TextStyle 提供独立变体以供使用。 某些语言对于这些情况有不同的形式。
package com.zetcode; import java.time.Month; import java.time.format.TextStyle; import java.util.Locale; public class Main { public static void main(String[] args) { Month month = Month.JANUARY; Locale russian = new Locale("ru", "RU"); System.out.println("FULL: " + month.getDisplayName(TextStyle.FULL, russian)); System.out.println("FULL_STANDALONE: " + month.getDisplayName(TextStyle.FULL_STANDALONE, russian)); System.out.println("SHORT: " + month.getDisplayName(TextStyle.SHORT, russian)); System.out.println("SHORT_STANDALONE: " + month.getDisplayName(TextStyle.SHORT_STANDALONE, russian)); } }
此示例显示了俄语中常规样式和独立样式之间的差异。 像俄语这样的某些语言对于独立使用有不同的语法形式。 输出演示了 1 月份的这些变化。
星期几格式化
TextStyle 可以使用不同的样式格式化星期几。 该示例显示了以各种样式和区域设置格式化星期二。
package com.zetcode; import java.time.DayOfWeek; import java.time.format.TextStyle; import java.util.Locale; public class Main { public static void main(String[] args) { DayOfWeek tuesday = DayOfWeek.TUESDAY; System.out.println("English FULL: " + tuesday.getDisplayName(TextStyle.FULL, Locale.US)); System.out.println("English SHORT: " + tuesday.getDisplayName(TextStyle.SHORT, Locale.US)); System.out.println("French FULL: " + tuesday.getDisplayName(TextStyle.FULL, Locale.FRANCE)); System.out.println("French NARROW: " + tuesday.getDisplayName(TextStyle.NARROW, Locale.FRANCE)); } }
此示例演示了使用 TextStyle 进行星期几格式化。 输出显示了不同样式和语言的星期二。 请注意法语中的 NARROW 样式如何使用单个字符,而英语使用两个字符。
使用 DateTimeFormatter
TextStyle 通常与 DateTimeFormatter 一起使用以自定义日期格式。 该示例显示了使用特定文本样式构建格式化程序。
package com.zetcode; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.time.format.TextStyle; import java.util.Locale; public class Main { public static void main(String[] args) { LocalDate date = LocalDate.of(2025, 4, 15); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMMM dd, yyyy", Locale.US) .withTextStyle(TextStyle.FULL); System.out.println("Full style: " + date.format(formatter)); DateTimeFormatter shortFormatter = DateTimeFormatter.ofPattern("MMM dd, yyyy", Locale.US) .withTextStyle(TextStyle.SHORT); System.out.println("Short style: " + date.format(shortFormatter)); } }
此示例显示了与 DateTimeFormatter 一起使用的 TextStyle。 格式化程序配置为对月份名称使用 FULL 或 SHORT 样式。 输出演示了格式化的差异。
区域设置敏感的格式化
TextStyle 根据区域设置生成不同的输出。 该示例显示了使用相同的文本样式,月份名称如何在不同语言之间变化。
package com.zetcode; import java.time.Month; import java.time.format.TextStyle; import java.util.Locale; public class Main { public static void main(String[] args) { Month april = Month.APRIL; System.out.println("English: " + april.getDisplayName(TextStyle.FULL, Locale.US)); System.out.println("German: " + april.getDisplayName(TextStyle.FULL, Locale.GERMANY)); System.out.println("Japanese: " + april.getDisplayName(TextStyle.FULL, Locale.JAPAN)); System.out.println("Chinese: " + april.getDisplayName(TextStyle.FULL, Locale.CHINA)); } }
此示例演示了使用 TextStyle 进行区域设置敏感的月份格式化。 输出显示了不同语言的“四月”。 每个区域设置对于同一个月份可能具有完全不同的文本表示形式。
组合 TextStyles
不同的 TextStyles 可以用于日期格式的不同部分。 该示例显示了具有混合样式的自定义格式。
package com.zetcode; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.time.format.TextStyle; import java.util.Locale; public class Main { public static void main(String[] args) { LocalDate date = LocalDate.of(2025, 4, 15); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEEE, MMMM dd, yyyy", Locale.US) .withTextStyle(TextStyle.FULL); System.out.println("Mixed styles: " + date.format(formatter)); DateTimeFormatter shortDayFormatter = DateTimeFormatter.ofPattern("E, MMMM dd, yyyy", Locale.US) .withTextStyle(TextStyle.SHORT); System.out.println("Short day style: " + date.format(shortDayFormatter)); } }
此示例显示了在一个格式化程序中组合不同的文本样式。 该模式使用 EEEE 表示完整的星期几名称,MMMM 表示完整的月份名称。 第二个格式化程序使用 E 表示缩写的星期几名称。
来源
在本文中,我们介绍了 Java TextStyle 枚举的基本值和功能。 了解这些概念对于 Java 应用程序中的正确日期-时间文本格式化至关重要。
作者
列出所有Java教程。