JapaneseDate 是 Java 8 引入的用于表示日本和历的类,基于 ISO 日期与年号系统双向映射,支持解析、格式化、计算及时区操作;它是 LocalDate 在日本年号下的视图,不改变时间点仅转换表达方式,自动处理年号更替边界。
JapaneseDate 是 Java 8 引入的 java.time.chrono 包中的一个类,专门用于表示和操作日本和历(如“令和”“平成”“昭和”等)日期。它不是简单字符串替换,而是基于 ISO 历法与日本年号系统的双向映射,支持解析、格式化、计算和时区感知操作。
JapaneseDate 实际上是 ISO 日历日期(LocalDate)在“日本年号历法”下的视图。它不改变底层时间点,只改变年号+年份的表达方式。例如:
JapaneseDate.of(2024, 4, 1) 对应“令和6年4月1日”(因为令和元年是2019年5月1日)不能直接 new,必须通过静态工厂方法构造:
JapaneseDate.of(2024, 4, 1) —— 从西历年月日转换(推荐,安全)JapaneseDate.from(TemporalAccessor) —— 从 LocalDate、ZonedDateTime 等转换JapaneseDate.parse("R6.04.01", DateTimeFormatter.ofPattern("GGGGy.M.d")) —— 解析带年号缩写的字符串(需用正确模式)JapaneseDate.now() 或 JapaneseDate.now(ZoneId.of("Asia/Tokyo")) —— 获取当前日本历日期直接调用 toString() 会输出类似 Japanese Heisei 31-04-30 的格式,但通常需要自定义显示。推荐用 DateTimeFormatter:
立即学习“Java免费学习笔记(深入)”;
DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL).withChronology(JapaneseChronology.INSTANCE)
DateTimeFormatter.ofPattern("GGGGy年M月d日", Locale.JAPANESE) → 输出“令和6年4月1日”G 表示纪元(era),y 表示年号下的年份(非西历年),Locale.JAPANESE 启用日语本地化(如“令和”而非“Reiwa”)JapaneseDate 和 LocalDate 可无损互转,但需注意语义差异:
localDate.atStartOfDay(ZoneId.of("Asia/Tokyo")).toInstant() 再转 JapaneseDate 更可靠(避免时区歧义)japaneseDate.toLocalDate() 总能获得唯一对应的 ISO 日期JapaneseDate.get(YEAR) 获取西历年——它返回的是年号年份(如令和6年 → 返回6);要用 japaneseDate.get(ChronoField.YEAR) 或先转 LocalDateDeepSeek多模态怎么样及保姆级配置教程(codex、claude)实用指南
WSL2+Docker+Ollama本地部署大模型思路和实践指南(Qwen1.8b)实用指南
DeepSeek Harness热门插件盘点:10个实用插件,覆盖多Agent、上下文和多模态实用指南
grep文本搜索与正则表达式完整代码示例实用指南
AI漫剧伪装直男1‑24集无雾版夸克网盘资源免费分享
AI漫剧玉僧入尘1-68集无雾无删版夸克网盘资源免费分享