React中使用DataTables.net格式化日期时排序异常问题求助
解决React中DataTables日期格式化后排序异常的问题
嘿,我完全懂你碰到的这个麻烦!用moment把日期转成好看的L格式后,DataTables排序就乱套了——这是因为默认情况下,DataTables会用你render返回的格式化字符串来排序,而字符串排序和日期的时间逻辑完全不一样嘛!
咱们只需要利用好render函数里的type参数就能搞定,这个参数会告诉DataTables当前是要显示、排序还是过滤内容,咱们针对不同场景返回对应的值就行:
修改后的配置代码
"columnDefs": [ { "targets": 5, "data": "date", "render": function (data, type, row, meta) { // 当DataTables要排序或判断数据类型时,返回原始日期值 if (type === 'sort' || type === 'type') { return data; } // 仅在显示或过滤时,返回格式化后的友好日期 return moment(data).format('L'); }, responsivePriority: 7 } ]
额外小贴士
- 如果你的原始
date数据不是标准可识别的日期格式(比如不是ISO字符串),可以在返回排序用的值时,转成时间戳更稳妥:if (type === 'sort' || type === 'type') { return moment(data).valueOf(); // 返回时间戳数字,排序绝对精准 } - 记得确保moment能正确解析你的原始日期,要是格式特殊,记得在moment里指定解析格式,比如
moment(data, 'YYYY-MM-DD HH:mm:ss'),避免解析出错导致排序还是有问题。
内容的提问来源于stack exchange,提问作者Dickie Smith
相关产品推荐
相关产品推荐

