"压扁" AJAX返回的Date数组调用String以在DataTables 1.09中使用

时间:2018-06-15 20:17:12

标签: javascript jquery ajax serialization datatables

我试图在一堆数据表中显示一行日期单元格。后端的日期表示如下:

org.joda.time LocalDate closeDt;

我正在进行一次AJAX调用,以获取一堆附加了多个日期的模型对象,并将所有这些数据提供给(旧版本1.09)DataTable。但是,问题是closeDate作为一个类似于

的值数组返回给我

picture of ajax result

不幸的是,在后端应用序列化程序或对模型数据进行任何类型的转换或如何返回它都不是一个选项,因为该迁移的依赖性和问题。

我已经尝试了" mRender" DataTables的功能如下:

{"mData": "closeDt", "sTitle": "Closed Date", "mRender": function(data, type, full) {
    var date = data[1] + "/" + data[2] + "/" + data[0];
    console.log("date is: ", date);
    return date;
  }},

但是,即使它没有取得成功。另外,如果我确定了一种方法来获得" mRender"工作我想提取函数,因为表格中有五六个其他日期以相同的方式表示。

如何让日期数组被压缩"在一个字符串中,在" MM / dd / yyyy"格式?

2 个答案:

答案 0 :(得分:0)

你可以destructure日期数组:

var [year, month, day] = closeDt;
var dateStr = [month, day, year].join('/');

小提琴:http://jsfiddle.net/p0aty3rf/

答案 1 :(得分:0)

我最终完成了以下所需的工作:

{"mData": "closeDt", "sTitle": "Closed Date", "mRender": function(data, type, full) {
    if(data !== null) {
      return new Date(data).toLocaleDateString({day: "2-digit", month: "2-digit"});
    } else {
      return "";
    }
  }},

我必须把if / else放进去,因为如果某个特定记录的数据为null,则Date()被设置为12/31/1969 ...我猜这是你调用new时的默认值日期(),但我没有花太多时间研究为什么或如何。我还必须在每个有日期的专栏的“mRender”中复制/粘贴它,我想研究它是否违反了DRY,但是现在它完成了工作。