如何在jQuery数据表中获取所需的日期格式?
我编写了以下代码,其中数据加载到croll上:如何在jQuery数据表中获取所需的日期格式?,jquery,datatables,Jquery,Datatables,我编写了以下代码,其中数据加载到croll上: $('#tblDiscount').DataTable({ serverSide: true, // true ordering: false, // false searching: false, // false lengthChange: false, // pagesize footer: true, columnDefs: [{ target
$('#tblDiscount').DataTable({
serverSide: true, // true
ordering: false, // false
searching: false, // false
lengthChange: false, // pagesize
footer: true,
columnDefs: [{ targets: [14, 16, 17], className: 'dt-body-right' }, { targets: [15], className: 'dt-body-center' },
{
targets: [9,13],
render:$.fn.dataTable.render.moment()
}
],
//searching: true,
dom: 'frBtip',
async: false,
ajax: function (data, callback, settings) {
var skip = 0;
if (data.start == 0)
skip = 0;
else
skip = data.start + 50; //data.length;
$.ajax({
url: '/Utility/_GetTestData',
data: {
State: stat,
Zone: zon,
Amrac: amr,
Store: store,
Hierarchy: hirarcy,
DiscountType: discountType,
Itemcategorycode: itemcatCode,
Itemcode: code,
Period: period,
OfferNo: offernumber,
skipRows: skip,
limit: 50 //data.length
},
datatype: "Json",
async: false,
success: function (data) {
//var item = $.parseJSON(data);
countRecords = data.recordCount;
totalOfDiscount = data.sumDiscount;
$("#tblDiscount_paginate").hide();
for (var i = 0; i < data.res.length; i++) {
if (hirarcy == "I") {
//out.push([i + '-1', i + '-2', i + '-3', i + '-4', i + '-5', i + '-6', i + '-7', i + '-8', i + '-9', i + '-10', i + '-11', i + '-12', i + '-13', i + '-14', i + '-15', i + '-16', i + '-17', i + '-18', i + '-19', i + '-20', i+'-21', i+'-22']);
out.push([data.res[i].state, data.res[i].zone, /*data.res[i].amro, data.res[i].rac,*/
data.res[i].Depot, /*data.res[i].type,*/ data.res[i].StoreCode, data.res[i].OfferType, data.res[i].DiscountType,
data.res[i].OfferNo, data.res[i].Description, data.res[i].ReceiptNo, data.res[i].TransDate,
data.res[i].Category, data.res[i].ItemCode, data.res[i].LotNo, data.res[i].ExpirationDate,
data.res[i].Quantity, data.res[i].FreeItem, data.res[i].NetValue, data.res[i].Discount/*, data.res[i].CrossReference*/]);
//out.push([data[i].state, data[i].zone]);
}
else if (hirarcy == "S") {
out.push([data.res[i].state, data.res[i].zone, data.res[i].amro, /*data.res[i].rac,*/
/* data.res[i].Depot*//*, data.res[i].type,*/ data.res[i].StoreCode, data.res[i].OfferType, data.res[i].DiscountType,
data.res[i].OfferNo, data.res[i].Description, data.res[i].ReceiptNo, data.res[i].TransDate,
data.res[i].Category, data.res[i].ItemCode, data.res[i].LotNo, data.res[i].ExpirationDate,
data.res[i].Quantity, data.res[i].FreeItem, data.res[i].NetValue, data.res[i].Discount/*, data.res[i].CrossReference*/]);
}
else if (hirarcy=="F") {
out.push([data.res[i].state, data.res[i].zone,/* data.res[i].amro,*/ data.res[i].rac,
/* data.res[i].Depot,*/ /*data.res[i].type,*/ data.res[i].StoreCode, data.res[i].OfferType, data.res[i].DiscountType,
data.res[i].OfferNo, data.res[i].Description, data.res[i].ReceiptNo, data.res[i].TransDate,
data.res[i].Category, data.res[i].ItemCode, data.res[i].LotNo, data.res[i].ExpirationDate,
data.res[i].Quantity, data.res[i].FreeItem, data.res[i].NetValue, data.res[i].Discount/*,data.res[i].CrossReference*/]);
}
}
//console.log(out.length);
},
error: function (jqXHR, textStatus, errorThrown) {
if (jqXHR.status == 500) {
alert('Internal error: ' + jqXHR.responseText);
} else {
alert('Please revise your FILTER selection as the \n' +
'information You are fetching has more than 1 lac Records');
location.reload(true);
}
}
});
setTimeout(function () {
callback({
draw: data.draw,
data: out,
recordsTotal: parseInt(countRecords),
recordsFiltered: parseInt(countRecords)
});
}, 50); // scroll request size
}, //end of ajax call for controller
scrollY: 500, // div height
scrollX: true,
scroller: {
loadingIndicator: true
},
footerCallback: function (row, data, start, end, display) {
var api = this.api()
var json = api.ajax.json();
$(api.column(17).footer()).html(totalOfDiscount);
var api = this.api(), data;
// Remove the formatting to get integer data for summation
var intVal = function (i) {
return typeof i === 'string' ?
i.replace(/[\$,]/g, '') * 1 :
typeof i === 'number' ?
i : 0;
};
// Total over all pages
total = api
.column(17)
.data()
.reduce(function (a, b) {
return intVal(a) + intVal(b);
}, 0);
// Total over this page
pageTotal = api
.column(17, { page: 'current' })
.data()
.reduce(function (a, b) {
return intVal(a) + intVal(b);
}, 0);
//// Update footer
$(api.column(17).footer()).html('Total:' + totalOfDiscount);
}
});
它们的格式如下:2020-01-31T00:00:00+05:30
我的直觉是因为这些代码行:
{
targets: [9,13],
render:$.fn.dataTable.render.moment()
}
但是,我需要YYYY-MM-DD或DD-MM-YYYY格式的数据。来自action方法的JSON数据类似于:Date(1615660200000)
我已经浏览了DataTables论坛,Allan(站点管理员)的许多帖子尝试了许多组合,但都并没有成功。我对jQuery DataTable的理解是相当初级的。您可以使用a来表示此列数据
一般形式为:
render: function ( data, type, row, meta ) {
// your logic here
}
下面是一个示例,其中第二列显示毫秒值,第三列从中派生:
以下是上述屏幕截图的HTML页面:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Millis</title>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://cdn.datatables.net/1.10.20/js/jquery.dataTables.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.20/css/jquery.dataTables.min.css">
<link rel="stylesheet" type="text/css" href="https://datatables.net/media/css/site-examples.css">
</head>
<body>
<div style="margin: 20px;">
<table id="demo" class="display dataTable cell-border" style="width:100%">
</table>
</div>
<script type="text/javascript">
var dataSet = [["foo", 1615660200000],["bar", 1617960230000]];
$(document).ready(function() {
$('#demo').DataTable({
data: dataSet,
columns: [
{ title: "Name" },
{ title: "Milliseconds" },
{ title: "Date",
render: function ( data, type, row, meta ) {
var d = new Date(row[1]);
// see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl
var ye = new Intl.DateTimeFormat('en', { year: 'numeric' }).format(d)
var mo = new Intl.DateTimeFormat('en', { month: '2-digit' }).format(d)
var da = new Intl.DateTimeFormat('en', { day: '2-digit' }).format(d)
return `${ye}-${mo}-${da}`;
}
}
]
});
});
</script>
</body>
</html>
米利斯
变量数据集=[[“foo”,1615660200000],“bar”,1617960230000];
$(文档).ready(函数(){
$('#demo')。数据表({
数据:数据集,
栏目:[
{标题:“姓名”},
{标题:“毫秒”},
{标题:“日期”,
呈现:函数(数据、类型、行、元){
var d=新日期(第[1]行);
//看https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl
var ye=new Intl.DateTimeFormat('en',{year:'numeric'})。格式(d)
var mo=new Intl.DateTimeFormat('en',{month:'2位'})。格式(d)
var da=new Intl.DateTimeFormat('en',{day:'2位'})。格式(d)
返回`${ye}-${mo}-${da}`;
}
}
]
});
});
你需要考虑你的日期是否显示为UTC,或者特定的时区。
请从你的问题中删除不必要的变量,以提供一个最小可行的例子,这会使它对答案更加友好。这里的相关代码可能是10行。它可能归结为“如何将时间戳转换为YYYY-MM-DD”的问题。我的数据来自存储过程。。。你能看一次吗?我到底应该在哪里实施这一逻辑…是什么给了我问题…@chaturvedi_anshumaan-这与你最初在这里提出的问题不同。我建议您创建一个新问题,并在该问题中提供相关细节。<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Millis</title>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://cdn.datatables.net/1.10.20/js/jquery.dataTables.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.20/css/jquery.dataTables.min.css">
<link rel="stylesheet" type="text/css" href="https://datatables.net/media/css/site-examples.css">
</head>
<body>
<div style="margin: 20px;">
<table id="demo" class="display dataTable cell-border" style="width:100%">
</table>
</div>
<script type="text/javascript">
var dataSet = [["foo", 1615660200000],["bar", 1617960230000]];
$(document).ready(function() {
$('#demo').DataTable({
data: dataSet,
columns: [
{ title: "Name" },
{ title: "Milliseconds" },
{ title: "Date",
render: function ( data, type, row, meta ) {
var d = new Date(row[1]);
// see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl
var ye = new Intl.DateTimeFormat('en', { year: 'numeric' }).format(d)
var mo = new Intl.DateTimeFormat('en', { month: '2-digit' }).format(d)
var da = new Intl.DateTimeFormat('en', { day: '2-digit' }).format(d)
return `${ye}-${mo}-${da}`;
}
}
]
});
});
</script>
</body>
</html>