1

次のようにモデル化された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に切り替わります。PMAM12:0112-59

この質問は、jqGridのAM / PM日付形式に似ていますが、変更を加えた後でも問題は解決しません。

私は何が欠けているか、間違っていますか?

4

2 に答える 2

0

あなたの時間を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" 

ここでは、「Ymd」を「dMY」に変更することはできません。

于 2012-08-27T10:41:01.797 に答える
0

問題はDateFormat、jquery.fmatter.jsの関数が次のAM/PMをサポートしていないことですsrcformat

    // 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);
        }

いくつかのオプションがあります。Webサービスを変更できる場合は、日付を別の形式(UNIXタイムスタンプなど)で返すようにするか、サポートされている形式で新しい日付列を返すようにすることができます。または、これをjqGridのバグとして報告したり、コードのこのセクションを修正してAM/PM指定子をサポートしたりすることもできます。

于 2012-08-27T17:40:34.760 に答える