Java JapaneseEra 类
最后修改时间:2025 年 4 月 16 日
java.time.chrono.JapaneseEra
类表示日本天皇年号历法中的一个年号。每个年号对应着一位天皇的统治时期。该类是 Java 8 中引入的 Java 现代日期时间 API 的一部分。
JapaneseEra
是不可变的,并且是线程安全的。它与其他类(如 JapaneseDate
)一起使用,以提供完整的日本日历支持。该类定义了已知年号的常量,并支持未来的年号。
JapaneseEra 类概述
JapaneseEra
提供了获取年号信息和在年号之间转换的方法。关键操作包括获取当前年号、通过数值查找年号以及处理日本日期。该类处理年号转换。
public final class JapaneseEra implements Era, Serializable { public static JapaneseEra of(int japaneseEra); public static JapaneseEra valueOf(String japaneseEra); public static JapaneseEra[] values(); public static JapaneseEra current(); public int getValue(); public String getDisplayName(TextStyle style, Locale locale); }
上面的代码展示了 JapaneseEra
提供的关键方法。这些方法允许进行年号查找、转换和显示。该类支持预定义的和未来的日本年号。
获取当前日本年号
可以使用 current
方法获取当前的日本年号。这对于需要在日本日历系统中显示日期的应用程序很有用。该方法根据系统时钟返回年号。
package com.zetcode; import java.time.chrono.JapaneseEra; public class Main { public static void main(String[] args) { JapaneseEra currentEra = JapaneseEra.current(); System.out.println("Current Japanese era: " + currentEra); System.out.println("Era value: " + currentEra.getValue()); System.out.println("Display name: " + currentEra.getDisplayName(java.time.format.TextStyle.FULL, java.util.Locale.ENGLISH)); } }
此示例演示了如何获取当前的日本年号。输出显示了年号对象、其数值和显示名称。显示名称根据语言环境和文本样式而异。
列出所有日本年号
可以使用 values
方法检索所有可用的日本年号。这将返回一个按时间顺序排列的所有已定义年号的数组。每个年号都有一个唯一的数值。
package com.zetcode; import java.time.chrono.JapaneseEra; public class Main { public static void main(String[] args) { JapaneseEra[] eras = JapaneseEra.values(); System.out.println("Japanese eras:"); for (JapaneseEra era : eras) { System.out.printf("%s (value: %d)%n", era, era.getValue()); } } }
此示例列出了所有日本年号及其数值。输出显示了从明治 (1868) 到当前年号的年号。也支持未来的年号。
按数值获取日本年号
可以使用 of
方法通过其数值检索特定的年号。每个年号都有一个由日本日历系统分配的唯一值。这允许精确的年号选择。
package com.zetcode; import java.time.chrono.JapaneseEra; public class Main { public static void main(String[] args) { // Get Heisei era (1989-2019) JapaneseEra heisei = JapaneseEra.of(JapaneseEra.HEISEI.getValue()); System.out.println("Heisei era: " + heisei); // Get Showa era (1926-1989) JapaneseEra showa = JapaneseEra.of(2); System.out.println("Showa era: " + showa); // Get Meiji era (1868-1912) JapaneseEra meiji = JapaneseEra.of(-1); System.out.println("Meiji era: " + meiji); } }
此示例展示了如何通过其数值检索特定的日本年号。请注意,明治年号的值为 -1,大正年号为 0,昭和年号为 2,依此类推。常量可用于近年号。
使用 JapaneseEra 创建 JapaneseDate
JapaneseEra
经常与 JapaneseDate
一起使用,以在日本日历系统中创建日期。这种组合提供了完整的日本日期处理功能。
package com.zetcode; import java.time.chrono.JapaneseDate; import java.time.chrono.JapaneseEra; import java.time.LocalDate; public class Main { public static void main(String[] args) { // Current date in Japanese calendar JapaneseDate currentJapaneseDate = JapaneseDate.now(); System.out.println("Current Japanese date: " + currentJapaneseDate); // Specific date in Showa era JapaneseDate showaDate = JapaneseDate.of(JapaneseEra.SHOWA, 64, 1, 7); System.out.println("Showa 64-1-7: " + showaDate); // Convert from LocalDate JapaneseDate convertedDate = JapaneseDate.from(LocalDate.of(2019, 4, 30)); System.out.println("Converted date: " + convertedDate); } }
此示例演示了如何使用年号创建日本日期。输出显示了日本日历格式的日期(年号-年-月-日)。也支持从 ISO 日期的转换。
格式化 JapaneseEra 名称
可以使用 getDisplayName
格式化日本年号的显示名称,以适应不同的语言环境和样式。这对于显示日本日期的本地化用户界面很有用。
package com.zetcode; import java.time.chrono.JapaneseEra; import java.time.format.TextStyle; import java.util.Locale; public class Main { public static void main(String[] args) { JapaneseEra reiwa = JapaneseEra.current(); System.out.println("Full name in English: " + reiwa.getDisplayName(TextStyle.FULL, Locale.ENGLISH)); System.out.println("Short name in English: " + reiwa.getDisplayName(TextStyle.SHORT, Locale.ENGLISH)); System.out.println("Full name in Japanese: " + reiwa.getDisplayName(TextStyle.FULL, Locale.JAPANESE)); System.out.println("Short name in Japanese: " + reiwa.getDisplayName(TextStyle.SHORT, Locale.JAPANESE)); } }
此示例展示了如何根据语言环境和样式不同地格式化年号名称。输出根据参数的不同,从全名(“令和”)到缩写(“R”)有所不同。
处理未来的日本年号
JapaneseEra
类旨在处理尚未定义的未来年号。这确保了应用程序在引入新年号时将继续工作。
package com.zetcode; import java.time.chrono.JapaneseEra; import java.time.chrono.JapaneseDate; import java.time.LocalDate; public class Main { public static void main(String[] args) { // Hypothetical future era (value 6 would be next after Reiwa) JapaneseEra futureEra = JapaneseEra.of(6); System.out.println("Future era: " + futureEra); // Create date in future era JapaneseDate futureDate = JapaneseDate.of(futureEra, 3, 5, 10); System.out.println("Future date: " + futureDate); // Verify future era properties System.out.println("Future era value: " + futureEra.getValue()); System.out.println("Future era name: " + futureEra.getDisplayName( java.time.format.TextStyle.FULL, java.util.Locale.ENGLISH)); } }
此示例演示了未来日本年号的处理。虽然显示名称可能是通用的,但该类保留了未来年号的所有功能。应用程序可以在官方定义之前安全地使用这些年号。
来源
在本文中,我们介绍了 Java JapaneseEra 类的基本方法和特性。理解这些概念对于在 Java 应用程序中处理日本日历日期至关重要。
作者
列出所有Java教程。