0

我有一个日期字段在 JSON 中显示为“2012 年 8 月 13 日 12:58:29” 我正在使用 jqGrid 3.7.2 并且无法升级。我需要在 colModel 中调整什么以启用日期格式这种格式的客户端“08/14/2012”?

我尝试使用: formatter: 'date', formatoptions: { srcformat: '', newformat: ''}

但我无法为 srcformat 和 newformat 找到正确的组合。它总是很奇怪。

谢谢

4

2 回答 2

2

您使用非常糟糕的日期格式"August, 13 2012 12:58:29"作为 jqGrid 的输入。建议在服务器和客户端之间发送的良好日期格式是某种语言独立格式和区域独立格式,例如2012-08-13T15:58:29Z(参见ISO 8601)。

另一个问题是 jqGrid 3.7.2 不支持'F'格式(或实现中的错误)。可以将DateFormat的代码和parseDate的代码与 jqGrid 3.7.2 的对应代码进行对比。如果您要更新 jqGrid 3.7.2 副本中的函数代码,则应该解决您的问题(例如,请参阅我的一些错误报告:例如此处此处)。

PS:如果您以后想收到有关您的问题的答案,您应该开始“接受”答案。只需单击一下即可完成您需要做的事情。

于 2012-08-15T17:08:38.667 回答
0

我通过手动更改 jquery.jqgrid.src.js (4.5.2) 解决了日期字段的 NaN/NaN/NaN 问题。就我而言,json 响应将返回“ISO1860Long”中的日期。它曾经工作到 4.1.2 jqgrid 版本

搜索“parseDate”函数;转到以下行:

if( opts.masks.hasOwnProperty(format) ) { format = opts.masks[format]; }
if(date && date != null) {

如果检查并添加以下内容:

if(date.constructor === Number) {
  if(String(format).toLowerCase() == "u") {
    date = date*1000;
  }
  timestamp = new Date(date);
} else

在现有的之前:

if( !isNaN( date - 0 ) && String(format).toLowerCase() === "u") {

如果需要,您可以自己将更改转换为 jquery.jqgrid.min.js

于 2013-11-28T09:48:23.670 回答