读书人

对Ext中DateField字段的扩张

发布时间: 2012-11-14 10:12:19 作者: rapoo

对Ext中DateField字段的扩展

?Ext中的DateField字段默认显示格式为'm/d/Y',不太符合中国的使用习惯,以'-'号隔开,或直接显示'xxxx年x月x日'的格式,并且在同一个软件系统中,通常情况会希望日期的显示格式都相同,不要在每个页面中单独设置显示样式。

另外,由于后台传输到前台的格式一般都是java中的Date类型,直接传输到前台会因为Ext中的时区设置问题造成转换错。

基于以上原因,扩展Ext中的DateField字段类型,代码如下所示:

?

?

?

justgin.bap.DateFieldEx = Ext.extend(Ext.form.DateField,{format:"Y-m-d",initComponent: function() {this.hideTrigger = this.readOnly;justgin.bap.DateFieldEx.superclass.initComponent.call(this);},setValue:function(value){var date = this.formatDate2(value);justgin.bap.DateFieldEx.superclass.setValue.call(this, date);},// private ,ext自己有个formatDate方法,因此这里用formatDate2    formatDate2 : function(date){        //CST时间和UTC时差转换        var dateStr=date.toString();        var position=dateStr.indexOf("UTC");        if(position!=-1){        return Ext.util.Format.date(date, this.format);        }else{        var vdate=new Date(date); //后台默认为格林尼治时间,该方法会默认把后台时间认为是北京时间,北京时间比格林尼治时间多14小时。        //找出当地时间偏移值的毫秒数        var localOffset=vdate.getTimezoneOffset()*60000;         var utcOffset= vdate.getTime() + localOffset;        timezone=utcOffset-6*3600000;//        var lastDate=new Date(timezone);         return Ext.util.Format.date(lastDate, this.format);         }    }});

?

读书人网 >Web前端

热点推荐