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

Angular中DevExtreme的dxi-column组件日期格式化问题

解决DevExtreme dxi-column日期格式化失效问题

先给几个直接可行的修正方案,再讲排查思路:

方案1:明确指定数据类型+正确格式语法

DevExtreme如果无法识别字段的日期类型,会忽略格式设置。加上dataType并使用对象格式定义:

<dxi-column dataField="DtCrt"
           caption="Utworzenie wymagania"
           [allowEditing]="false"
           [dataType]="'date'"
           [format]="{ type: 'date', pattern: 'MM/dd/yyyy' }">
</dxi-column>

或者简化为字符串格式(注意不需要额外的引号绑定):

<dxi-column dataField="DtCrt"
           caption="Utworzenie wymagania"
           [allowEditing]="false"
           [dataType]="'date'"
           format="MM/dd/yyyy">
</dxi-column>

方案2:处理非Date类型的数据源

如果后端返回的DtCrt是字符串(比如ISO格式2024-05-20T12:00:00)或时间戳,DevExtreme的内置格式不会生效。可以用calculateCellValue手动转换并格式化:

<dxi-column dataField="DtCrt"
           caption="Utworzenie wymagania"
           [allowEditing]="false"
           [calculateCellValue]="formatCustomDate">
</dxi-column>

在组件类中实现方法:

formatCustomDate(rowData: any): string {
  const date = new Date(rowData.DtCrt);
  if (isNaN(date.getTime())) return '-'; // 处理无效日期
  const month = (date.getMonth() + 1).toString().padStart(2, '0');
  const day = date.getDate().toString().padStart(2, '0');
  const year = date.getFullYear();
  return `${month}/${day}/${year}`;
}

方案3:排查本地化配置干扰

你的列标题是波兰语,说明项目可能启用了DevExtreme波兰本地化。部分本地化包会覆盖默认日期格式,此时需要明确指定格式优先级,或者在本地化配置中自定义日期格式。

DevExtreme特定日期格式化方式

  1. 预定义格式:直接使用内置格式字符串,比如format="shortDate"(对应本地短日期)、format="longDate"(带星期和月份名称)等。
  2. 自定义模式:通过对象配置指定模式,支持的占位符包括:
    • yyyy:四位年份
    • MM:两位月份(01-12)
    • dd:两位日期(01-31)
    • MMM:月份缩写(如Jan、Feb)
    • ddd:星期缩写(如Mon、Tue)
      示例:[format]="{ type: 'date', pattern: 'MMM dd, yyyy' }"
  3. 自定义文本:使用customizeText回调函数直接控制显示内容,适合复杂场景:
<dxi-column dataField="DtCrt"
           caption="Utworzenie wymagania"
           [allowEditing]="false"
           [customizeText]="(cellInfo) => {
             const date = new Date(cellInfo.value);
             return `${(date.getMonth()+1).toString().padStart(2,'0')}/${date.getDate().toString().padStart(2,'0')}/${date.getFullYear()}`;
           }">
</dxi-column>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 18:10:10