1. 程式人生 > >Extjs中時區和前臺的時區不一致

Extjs中時區和前臺的時區不一致

當後臺伺服器的時區和前臺的時區不一致,我們可以通過手動轉換來達到效果。

JS時區轉載函式:

function formatTime(date){
    //CST時間和UTC時差轉換
    var formatPattern = 'Y-m-d H:i';
    var dateStr=date.toString();
    var position=dateStr.indexOf("UTC");
    if(position!=-1){
        return Ext.util.Format.date(date, formatPattern);
    }else{
        var vdate=new Date(date); //後臺預設為格林尼治時間,該方法會預設把後臺時間認為是北京時間,北京時間比格林尼治時間多14小時。
        //找出當地時間偏移值的毫秒數
        var localOffset=vdate.getTimezoneOffset()*60000;
        var utcOffset= vdate.getTime() + localOffset;
        var timezone=utcOffset-6*3600000;
        var lastDate=new Date(timezone);
        return Ext.util.Format.date(lastDate, formatPattern);
    }
}

Grid Panel 呼叫示例:
    function formatShowTime(value){
        return formatTime(value);
    }

    var gridPanel = Ext.create('Ext.grid.Panel', {
        id: GRID_PANLE,
        store: dataDP,
        columns: [
            { text: '請求總數', flex: 1,  dataIndex: 'totalReq' },
            { text: '成功請求', flex: 1,  dataIndex: 'successResp' },
            { text: '平均時延', flex: 1, dataIndex: 'avgDelayTime', xtype: 'numbercolumn', format:'0.000' },
            { text: '精度', flex: 1, dataIndex: 'pricision', xtype: 'numbercolumn', format:'0.000' },
            { text: '開始時間', flex: 1, dataIndex: 'beginTime', renderer: formatShowTime },
//            { text: '結束時間', flex: 1, dataIndex: 'endTime', xtype:'datecolumn', format:'Y-m-d H:i' }
            { text: '結束時間', flex: 1, dataIndex: 'endTime', renderer: formatShowTime }
        ],
        layout: 'fit'
    });

這樣時間的顯示就正常了,不會有時區顯示異常的問題了。