解决问题的方法有很多。源格式srcformat: 'U' 表示(与 jqGrd 使用的其他格式一样)PHP 格式。从 PHP 5.2.2 开始,它支持 "u" 格式,但它意味着 微秒 (μs) 而不是您使用的 毫秒 (ms)(参见 @例如 987654323@)。所以输入数据应该是整数或浮点值,为 1/1000 毫秒才能被srcformat: 'U' 成功处理。 jqGrid 解析srcformat: "U" 格式的操作将从以下代码行(参见here)中清楚
if( !isNaN( date - 0 ) && String(format).toLowerCase() === "u") {
timestamp = new Date( parseFloat(date)*1000 );
}
因此,您只需调整用作srcformat: "U" 输入的值。
更新:如果您的输入数据类似于1394085600000,并且如果您无法更改它,那么您可以使用调用“日期”格式化程序的自定义格式化程序:
formatter: function (cellval, opts, rowObject, action) {
return $.fn.fmatter.call(
this,
"date",
new Date(cellval),
$.extend({}, $.jgrid.formatter.date, opts),
rowObject,
action);
}
请参阅the demo 使用它。
更新 2: Free jqGrid fork 支持新格式选项:srcformat: "u1000",它将日期转换为长整数格式,如 1394085600000 中的 "03/06/2014"。因此,要解决这个问题,只需升级到当前版本的免费 jqGrid。见the demo或the answer
我必须警告使用伪格式srcformat: 'U/1000'。 jqGrid(无论是旧的还是新的)都支持该格式。它可以用作仅显示日期的黑客手段,但其他功能将无法正常工作(编辑、过滤、排序等),甚至无法在某些网络浏览器中阅读(见the question)。因此我强烈建议不要使用srcformat: 'U/1000' 的hack。