我甚至不确定如何提出这个问题。我遇到了一个非常奇怪的问题,涉及aspx页面上的DataTables.net控件,控件使用ajax调用来填充以检索结果。
我一直在将日期作为字符串返回,但是当点击列标题时排序完全错误。所以我改变了返回结果以使用DateTime?键入日期而不是字符串。这解决了排序问题,但现在日期格式严重。所以我找到了这篇文章:format json date to mm/dd/yy format before displaying in a jquery datatable 我用这个例子:
$('#userData').DataTable({
columns: [
{ "data": "userId"},
{ "data": "userCreated",
"type": "date ",
"render":function (value) {
if (value === null) return "";
var pattern = /Date\(([^)]+)\)/;
var results = pattern.exec(value);
var dt = new Date(parseFloat(results[1]));
return (dt.getMonth() + 1) + "/" + dt.getDate() + "/" + dt.getFullYear(); }
}
]
};
但是,当我运行代码时,我的所有日期都出现在1929年。所以我检查了生成的json数据中返回到ajax调用的日期是什么样的,日期数据如下所示:
2017-10-29T19:57:46
所以我修改了我的代码:
{
data: 'CreatedDate',
"orderable": true,
"searchable": true,
"title": "Created Date",
"type": "date",
"render": function(value) {
if (value === "") {
return value;
}
var dt = new Date(value);
return (dt.getMonth() + 1) + "/" + dt.getDate() + "/" + dt.getFullYear();
}
},
这很有效,所以我致力于GIT,并进行了构建并部署到QA。代码在该环境中运行良好。
接下来,我从刚刚交付给QA的分支机构开始分支,这样我就可以开始处理与日期无关的下一个问题了。 我做了一些小的更改,这些更改不会影响返回控件结果的代码。我测试一下。神秘的所有日期再次出现在1929年。我检查json返回到ajax调用,现在日期数据如下所示:
“/日期(1510112492000)/”
所以我将代码还原回原始示例,现在日期在控件中正确显示。
我的问题是,是什么导致json日期数据改变形式?当我部署到QA环境时,我会发生什么?我很困惑。