如何在jQuery数据表中获取所需的日期格式?

如何在jQuery数据表中获取所需的日期格式?,jquery,datatables,Jquery,Datatables,我编写了以下代码,其中数据加载到croll上: $('#tblDiscount').DataTable({ serverSide: true, // true ordering: false, // false searching: false, // false lengthChange: false, // pagesize footer: true, columnDefs: [{ target

我编写了以下代码,其中数据加载到croll上:

 $('#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>