如何去除DataTable中日期列的时间部分?
DataTable日期列去除时间部分的正确处理方式
你之前直接在DataTable初始化根节点添加format配置是无效的——DataTable并没有这个全局配置项,需要针对目标日期列单独配置渲染规则。以下是两种可靠的解决方案:
方案一:原生JavaScript Date对象处理
适合未引入日期库的项目,手动提取日期部分:
var grid = $('#grid').DataTable({ columns: [ // 其他列的配置... { data: 'yourDateField', // 替换为你数据源中的日期字段名 render: function(data, type, row) { if (!data) return ''; const date = new Date(data); // 格式化为 DD-MM-YYYY,可根据需求调整顺序(比如 Y-M-D) const day = String(date.getDate()).padStart(2, '0'); const month = String(date.getMonth() + 1).padStart(2, '0'); const year = date.getFullYear(); return `${day}-${month}-${year}`; } } // 其他列的配置... ] });
方案二:使用moment.js简化处理(若项目已引入)
如果你的项目已经使用了moment.js日期库,代码会更简洁:
var grid = $('#grid').DataTable({ columns: [ // 其他列的配置... { data: 'yourDateField', render: function(data, type, row) { return data ? moment(data).format('DD-MM-YYYY') : ''; } } // 其他列的配置... ] });
额外注意事项
- 确保
data属性值与你数据源中的日期字段名完全匹配(比如后端返回的create_time) - 如果是服务器端已渲染好的HTML表格(原始单元格带日期时间),可通过
row参数获取原始内容处理:
render: function(data, type, row) { // 假设目标列是第3列(索引从0开始),提取空格前的日期部分 const rawDate = $(row).find('td:eq(2)').text(); return rawDate ? rawDate.split(' ')[0] : ''; }
内容的提问来源于stack exchange,提问作者Weboshii
相关产品推荐
相关产品推荐

