Extjs中时区和前台的时区不一致

本文介绍了一种在JavaScript中处理前后台服务器时区不一致问题的方法。通过自定义函数formatTime进行时间格式化,实现从UTC时间到目标时区的时间转换,并在GridPanel组件中应用该函数以正确展示时间数据。


当后台服务器的时区和前台的时区不一致,我们可以通过手动转换来达到效果。

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

这样时间的显示就正常了,不会有时区显示异常的问题了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值