我正在使用DataTables.net上的this example,但我已经进行了修改,以便我可以使用我的API调用ajax。
我的问题是我的API返回像这样的DateTime值......
创建= 2015-02-13T00:00:00
我需要能够将其转换为只是没有时间表的日期(希望不更改API)。我尝试过所有我想知道的事情。我仍然是这个高级javascript的初学者。我试图做一个简单的子串,但我不认为这是有效的。好吧,至少我是怎么尝试的。
感谢您的帮助!
DataTables v1.10.5
Jquery v1.11.2(由于需要支持IE8)
原始问题代码:
$(document).ready(function () {
var table = $('#AllHuddleRecords').DataTable({
"ajax": "../api/huddle/posts",
"columns": [
{
"className": 'details-control',
"orderable": false,
"data": null,
"defaultContent": ''
},
{ "data" : "EmpName" },
{ "data": "Created" },
{ "data" : "PriorityName" },
{ "data" : "TopicName" }
]
});
感谢cmxl的指导......这是工作代码......
var table = $('#AllHuddleRecords').DataTable({
"ajax": "../api/huddle/posts",
"columns": [
{
"className": 'details-control',
"orderable": false,
"data": null,
"defaultContent": ''
},
{ "data" : "EmpName" },
{ "data": "Created" },
{ "data" : "PriorityName" },
{ "data" : "TopicName" }
],
"columnDefs": [
{
"render" : function (data, type, row) {
return new Date(data).toLocaleString();
},
"targets": 2
}
]
});
答案 0 :(得分:3)
您可以挂钩列呈现事件。请参阅此处的文档: https://datatables.net/examples/advanced_init/column_render.html
$(document).ready(function() {
$('#example').dataTable( {
"columnDefs": [
{
// The `data` parameter refers to the data for the cell (defined by the
// `data` option, which defaults to the column being worked with, in
// this case `data: 0`.
"render": function ( data, type, row ) {
return data.slice(0, data.indexOf('T'));
},
"targets": 0
},
{ "visible": false, "targets": [ 3 ] }
]
} );
} );
或者,如果您想将字符串解析为日期,可以在此处参考此答案: Converting string to date in js
//...
"render": function ( data, type, row ) {
return new Date(data).toString();
}
//...
在这里,您可以更深入地了解Javascript中的Date对象: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Date
答案 1 :(得分:0)
在将数据发送到数据表之前,是否可以对数据进行一些预处理,例如,如果要将以下数据插入数据表,请对数据的每个元素使用Date.parse()转换为所需的格式?
var ajaxData = {
"data": [{
"EmpName": "Bob",
"Created": "2015-02-13T00:00:00",
"PriorityName": "Priority1",
"TopicName": "Topic1"
}]
};
$(ajaxData.data).each(function() {
var dateMillis = new Date(this.Created);
this.Created = dateMillis.getMonth() + "/" + dateMillis.getDay() + "/" + dateMillis.getFullYear();
});
请注意,如果要对日期列进行排序,那么解决方案可能是使用Date.parse()预处理数据并将日期转换为毫秒,然后使用render将日期转换为可读格式为cmxl建议。祝你好运!