欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Extjs4如何处理后台json数据中日期和时间

程序员文章站 2023-01-10 16:47:15
当asp.net后台使用javascriptserializer这个组件将对象序列化为json,或者使用scriptmethod特性的json [scriptm...

当asp.net后台使用javascriptserializer这个组件将对象序列化为json,或者使用scriptmethod特性的json

 [scriptmethod(responseformat = responseformat.json), webmethod(enablesession = true)]
    public list<euser> users()//参数测试用
    {
      list<euser> l = new list<euser>();
      random aran = new random();
      for (int i = 0; i < 24; i++)
      {
        datetime date = datetime.parse("2015-08-21");
        date = date.addhours(i);
        var u = new euser(date,math.round(aran.nextdouble() * 100) , 
          math.round(aran.nextdouble() * 100), math.round(aran.nextdouble() * 100));
        l.add(u);
      }
      return l;
    }

 生成的日期json格式是这样的//date(1213718400000+0800)//
这种格式extjs不识别,导致grid上无法正常显示。使用extjs4的时候,在列模式里像下面这样处理即可。

{ 
   text:'审核时间', 
   dataindex:'date', 
   width:200, 
   renderer: function(value) { 
     if(value){ 
       var dt=eval("new " + value.substr(1, value.length - 2)).tostring(); 
     return ext.util.format.date(dt, "y年m月d日h时i分s秒");//"y年m月d日h时i分s秒"    
     }   
    } 
 }

当asp.net后台使用newtonsoft.json(json.net)这个组件将对象序列化为json,

  hashtable ht = new hashtable(); 
  ht.add("total", listu.count); 
  ht.add("rows", listu); 
  jsonstr = jsonconvert.serializeobject(ht);//使用json.net序列化 
  context.response.write(jsonstr); 

生成的日期格式是标准的日期像这样子:

"2013-01-15t15:00:00"

{ 
  text:'审核时间', 
  dataindex:'date', 
  width:200, 
  xtype:'datecolumn', 
  format:'y年m月d日h时i分s秒' 
}

 extjs4---json处理日期的问题 jsonobject.tobean转换日期时显示当前日期

 今天碰到了一个新问题,在前台修改日期后,在后台用jsonobject.tobean转为实体类时出问题了:

1、会显示警告:can't transform property 'birthday' from java.lang.string into java.util.date. will register a default morpher

2、转换的日期为当前的日期,而不是修改后的日期

原因是jsonobject不能识别类似“yyyy-mm-dd”的格式

解决的办法有很多,下面分享我用的一种方法:

jsonobject object = jsonobject.fromobject(updateuser); 


//在<span style="font-family: arial;">jsonobject.tobean加上这行代码就可以了</span> 


jsonutils.getmorpherregistry().registermorpher(new datemorpher(new string[] {"yyyy-mm-dd", "yyyy-mm-dd hh:mm:ss"})); 


user user = (user) jsonobject.tobean(object, user.class);

通过此方法问题解决,方法还有很多种,欢迎大家分享,功能学习进步。