You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot集成Thymeleaf时乌克兰语日期月份本地化失效如何解决

问题根因

你之前的代码核心问题是乌克兰语的语言代码拼写错误:乌克兰语的ISO 639-1标准语言代码是uk,而非你写的ua(ua是乌克兰的国家代码),构造Locale时传错语言代码会导致系统找不到对应的本地化资源,自动回退到英文显示。
另外你混用了java.util.Date和java.time.LocalDate类型,#temporals是专门适配Java 8+时间API的工具类,你的实体类字段是java.util.Date类型,直接用#dates工具类格式化即可,不需要额外做类型转换。

可用解决方案

方案1:硬编码乌克兰语Locale(固定显示乌克兰语日期)

直接修正Locale构造参数,用#dates格式化原Date字段即可:

<td th:text="${#dates.format(tempReport.reportDate, 'dd-MMMM-yyyy HH:mm:ss', new java.util.Locale('uk', 'UA'))}"></td>

格式化后输出效果完全符合你的预期:10-квітня-2021 18:58:53

方案2:适配全局语言切换(随系统当前语言自动切换日期格式)

如果你的项目已经配置了全局Locale解析器,不需要硬编码Locale,直接传入上下文的#locale即可:

<td th:text="${#dates.format(tempReport.reportDate, 'dd-MMMM-yyyy HH:mm:ss', #locale)}"></td>

注意需要确保你项目的Locale切换逻辑中,乌克兰语对应的Locale实例构造正确,语言代码为uk、国家代码为UA。你可以加一行测试代码验证当前上下文的Locale是否正确:

<!-- 切换到乌克兰语时应该输出 uk_UA -->
<td th:text="${#locale}"></td>

补充说明

Java的Locale类确实没有预置UKRAINIAN常量,手动构造new Locale("uk", "UA")是标准用法,不需要依赖预置常量也能正常生效。


内容的提问来源于stack exchange,提问作者 skipper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 12:15:01