Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jqGrid日期格式生成错误的AM/PM_Jqgrid_Jqgrid Formatter - Fatal编程技术网

jqGrid日期格式生成错误的AM/PM

jqGrid日期格式生成错误的AM/PM,jqgrid,jqgrid-formatter,Jqgrid,Jqgrid Formatter,我将jqgrid中的列建模如下: colModel: [ ... { name: 'TranDate', index: 'TranDate', search: false, width: 150, sorttype: 'date', formatter: 'date', formatoptions: { srcformat: 'Y-m-d H:i:s A', newformat: 'd-M-Y h.i A

我将jqgrid中的列建模如下:

colModel: [
          ...
          { name: 'TranDate', index: 'TranDate', search: false, width: 150, 
            sorttype: 'date', formatter: 'date', 
            formatoptions: { srcformat: 'Y-m-d H:i:s A', newformat: 'd-M-Y h.i A'} },
         ...
         ],
从JSON返回的数据具有以下格式
2012-07-06 3:25:19 PM
,但当使用上述格式在网格上显示时,它将
PM
切换到
AM
,但
12:01
12-59
之间的时间除外

此问题与类似,但即使进行了修改,问题仍然存在


我错过了什么或做错了什么?

它之所以这样做,是因为它假设你的时间是24小时制。你的代码应该会修复它,但我找不到它有什么问题

但是,在这里,这将为您解决它

把这个换掉

formatter: 'date', formatoptions: { srcformat: 'Y-m-d H:i:s A', newformat: 'd-M-Y h.i A'} },
用这个

datefmt: "Y-m-d h:i A" 
在这里,您将无法将“Y-m-d”更改为“d-m-Y”。

问题是jquery.fmatter.js中的函数不支持
srcformat
中的AM/PM:

    // Tony Tomov
    // PHP implementation. Sorry not all options are supported.
    // Feel free to add them if you want
    DateFormat : function (format, date, newformat, opts)  {
具体来说,您可以在下面看到,解析给定日期时不支持
A
选项:

        } else {
            date = String(date).split(/[\\\/:_;.,\t\T\s-]/);
            format = format.split(/[\\\/:_;.,\t\T\s-]/);
            // parsing for month names
            for(k=0,hl=format.length;k<hl;k++){
                if(format[k] == 'M') {
                    dM = $.inArray(date[k],dateFormat.i18n.monthNames);
                    if(dM !== -1 && dM < 12){date[k] = dM+1;}
                }
                if(format[k] == 'F') {
                    dM = $.inArray(date[k],dateFormat.i18n.monthNames);
                    if(dM !== -1 && dM > 11){date[k] = dM+1-12;}
                }
                if(date[k]) {
                    ts[format[k].toLowerCase()] = parseInt(date[k],10);
                }
            }
            if(ts.f) {ts.m = ts.f;}
            if( ts.m === 0 && ts.y === 0 && ts.d === 0) {
                return "&#160;" ;
            }
            ts.m = parseInt(ts.m,10)-1;
            var ty = ts.y;
            if (ty >= 70 && ty <= 99) {ts.y = 1900+ts.y;}
            else if (ty >=0 && ty <=69) {ts.y= 2000+ts.y;}
            timestamp = new Date(ts.y, ts.m, ts.d, ts.h, ts.i, ts.s, ts.u);
        }
}其他{
日期=字符串(日期).split(/[\\\/:\;\t\t\s-]/);
format=format.split(/[\\\/:\;\t\t\s-]/);
//解析月份名称
对于(k=0,hl=format.length;k11){date[k]=dM+1-12;}
}
如果(日期[k]){
ts[format[k].toLowerCase()]=parseInt(日期[k],10);
}
}
如果(ts.f){ts.m=ts.f;}
如果(ts.m==0&&ts.y==0&&ts.d==0){
返回“ ;”;
}
ts.m=parseInt(ts.m,10)-1;
var-ty=ts.y;

如果(ty>=70&&ty=0&&ty替换为
datefmt:“m/d/Y h:i A”
以返回的JSON格式显示数据(
2012-07-06 3:25:19 PM
)。我希望显示的内容显示为
06-Jul-2012 3.25 PM
。如果您可以在24小时内从服务器发送数据,而您以前的代码将修复AM/PM问题,我发现从服务器端格式化日期更容易。这样,我只需按我需要的格式格式化一次,而无需再次指定格式在网格上显示时。您的链接让人大开眼界,谢谢。我发现第一个选项更容易实现,并从服务器返回所需的格式。只要有解决方法,我认为打开错误报告并不重要。再次阅读链接上的开始评论可能是不尝试导入的原因任何可能的选择或形式。