如何在Dynamics 365中为Dataverse表日期时间列设置自定义格式?
在Dynamics 365中自定义Dataverse日期时间列展示格式的可行性
这个需求完全可行,以下是不同场景下的实现方案:
1. 模型驱动应用场景
方案一:使用计算列
创建一个文本类型的计算列,通过Dataverse内置的日期格式化函数拼接出目标格式。示例公式:
FORMATDATETIME(你的日期时间字段名, 'dddd, dd MMMM yyyy, HH:mm')
- 说明:
dddd对应星期全称,dd是两位日期,MMMM是月份全称,yyyy是四位年份,HH:mm是24小时制的时分。 - 配置完成后,在表单或视图中替换原日期时间字段为这个计算列即可。
方案二:使用JavaScript脚本
在表单加载时编写脚本,读取原日期时间字段的值,转换为指定格式后赋值给一个只读文本字段(避免修改原字段数据)。示例核心逻辑:
// 获取日期时间字段值 var dateValue = formContext.getAttribute("your_datetime_field").getValue(); if (dateValue) { // 格式化为目标样式(中文环境示例) var formattedDate = dateValue.toLocaleString('zh-CN', { weekday: 'long', day: '2-digit', month: 'long', year: 'numeric', hour: '2-digit', minute: '2-digit' }); // 赋值给只读文本字段 formContext.getAttribute("your_display_field").setValue(formattedDate); }
2. 网格视图(列表)场景
- 最简便的方式是直接使用上述的计算列,将其添加到目标视图中即可实现列表内的自定义格式展示。
- 若需避免创建计算列,可通过网格脚本自定义单元格渲染逻辑,但配置复杂度较高,不推荐作为首选方案。
3. 画布应用场景
直接在日期时间控件的文本属性中设置格式化表达式,示例:
Text(ThisItem.你的日期时间字段名, "dddd, dd MMMM yyyy, HH:mm")
- 中文环境下,该表达式会自动显示中文星期和月份,无需额外配置。
注意事项
- 计算列的格式显示依赖Dataverse环境的语言设置,若需多语言适配,需结合语言检测调整格式字符串。
- JavaScript方案需注意时区转换,确保显示的是当前用户时区的时间。
内容的提问来源于stack exchange,提问作者Stefano Ferrario
相关产品推荐
相关产品推荐

