日期:2014-05-16  浏览次数:20330 次

ExtJS中数据源中的日期格式不组件接受的日期格式不一致时??

在用ExtJS + struts2-json开发过程上发现日期格式与组件接受的格式不一致,不显示结果或是乱了。

?

现象:

????? 因为struts2-json转换java.util.Date类的结果格式为:2010-10-25T23:12:10

? 我们一般在ExtJS端会使用renderer:Ext.util.Format.dateRenderer 来完成格式转换,

?但是问题来了,这样的方法在FF下,是生效的,但不知道怎么了在IE下,就无效了。

?经查原代码,出现在IE下是 v = new Date(Date.parse(v)); 中的Date.parse 出现了问题,在IE中识别不了2010-10-25T23:12:10 格式的日期,需要转换为2010/10/25 23:12:10 形式的格式。

?

我只就用renderer自己写方法来完成,如下:

{header:"生日",width:80,dataIndex:"birthday",format:"Y-m-d",sortable:true,align:"center"
            	   ,renderer:function(v){
		            	   if(!v){
		                       return "";
		                   }
						   //alert(v);
		            	   v = v.replace(new RegExp("-","gm"), "/").replace("T"," ");
						   //alert(v);
		                   if(!Ext.isDate(v)){
		                       v = new Date(Date.parse(v)); 
		                   }
						   //alert(v);
		                   return v.dateFormat("Y-m-d");
		             }
            	   },         

?

后来发现datefield组件也是一样的,如果不处理datefield不接受数据。也是自己写了。不过这是Record中 写了。:

?

注意这次里是使用convert

?

new Ext.data.JsonReader({
						root:"user"
					},[			   
					   {name:"user.id",type:"int",mapping:"id"},
					   					   {name:"user.name",type:"string",mapping:"name"},				   
					   {name:"user.birthday",type:"string",dateFormat:"Y-m-d G:i:s",mapping:"birthday",
							convert : function(v,rec){
								 if(!v){
		                       return "";
		                   }
		            	   v = v.replace(new RegExp("-","gm"), "/").replace("T"," ");
		                   if(!Ext.isDate(v)){
		                       v = new Date(Date.parse(v)); 
		                   }
		                   return v.dateFormat("Y-m-d");
							}
						}
					 ]);
?

?

1 楼 蜀山红日 2012-03-30  
可不可以转换成形如20120330