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

Freemarker如何获取对应locale下日期格式化的分隔字符?

Freemarker 获取对应Locale短日期分隔符方案

核心结论

Freemarker 本身没有内置直接返回当前Locale对应短日期分隔符的专用方法,你可以通过以下两种方式实现需求:


方案1:纯模板层取巧获取

利用当前Locale下短日期字符串的格式特征,通过正则提取分隔符,适配绝大多数主流Locale场景:

[#setting locale="de"]
[#assign shortDateStr = .now?date?string.short]
<!-- 正则替换掉所有数字,剩余第一个字符就是分隔符 -->
[#assign dateSeparator = shortDateStr?replace('[0-9]', '', 'r')?first]
de 区域分隔符:${dateSeparator}

<br>

[#setting locale="en"]
[#assign shortDateStr = .now?date?string.short]
[#assign dateSeparator = shortDateStr?replace('[0-9]', '', 'r')?first]
en 区域分隔符:${dateSeparator}

该方案输出结果为:

de 区域分隔符:.
en 区域分隔符:/

方案2:Java后端注入(更稳定)

如果可以修改后端Java代码,可以直接在Java层拿到分隔符后注入Freemarker上下文,模板直接调用即可:

// Java 端核心逻辑示例
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Locale;

// 拿到当前Freemarker使用的Locale实例
Locale currentLocale = 你当前使用的Locale对象;
// 获取对应Locale的短日期格式化实例
SimpleDateFormat shortDateFormat = (SimpleDateFormat) DateFormat.getDateInstance(DateFormat.SHORT, currentLocale);
// 从格式规则中提取分隔符
String dateSeparator = shortDateFormat.toPattern().replaceAll("[yMd]", "").substring(0, 1);
// 注入Freemarker模型,模板中可直接读取${dateSeparator}
model.addAttribute("dateSeparator", dateSeparator);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:06:07