`
wjt276
  • 浏览: 640942 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

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

相关推荐

Global site tag (gtag.js) - Google Analytics