AEM中datefield xtype完整月份日期格式设置问询
在AEM Datefield中配置完整月份格式的方法
要输出「23 September 2022」这种带完整月份名称的日期格式,核心是把日期格式符从M替换为MMMM,以下分不同场景说明配置方式:
1. 后端Java代码处理(如Sling Model)
如果是在Java层处理日期输出,使用SimpleDateFormat时,将格式字符串改为"d MMMM yyyy",同时指定英文Locale避免语言环境问题:
import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; // 示例:格式化Date对象 Date date = properties.get("date", Date.class); SimpleDateFormat fullMonthFormatter = new SimpleDateFormat("d MMMM yyyy", Locale.ENGLISH); String formattedDate = fullMonthFormatter.format(date);
2. Dialog中配置Datefield的显示格式
在组件dialog的datefield配置里,将format属性设置为d MMMM Y,如果需要保留标准的存储格式(如yyyy-MM-dd),可以单独设置submitFormat:
<date-selector jcr:primaryType="nt:unstructured" sling:resourceType="granite/ui/components/coral/foundation/form/datefield" fieldLabel="发布日期" name="./publishDate" format="d MMMM Y" submitFormat="yyyy-MM-dd"/>
3. HTL模板中直接格式化
在HTL里使用内置的格式化功能,指定格式和Locale:
<div class="date">${properties.publishDate @ format='d MMMM yyyy', locale='en'}</div>
关键注意点
- 格式符区分大小写:
M对应数字月份,MM是两位数字,MMM是缩写月份,MMMM才是完整月份名称 - 必须指定Locale(如
Locale.ENGLISH或HTL中的locale='en'),否则会根据服务器默认语言环境输出,可能得到非英文的月份名称
内容的提问来源于stack exchange,提问作者Deepak krishna R
相关产品推荐
相关产品推荐

