jqGrid表格中long类型转date类型

jqGrid表格显示mysql上的datetime类型,因为Java中读入datetime为long类型,所以通过json显示在网页上的为一串数字,而不是year-mouth-day:hour-minute-second,的类型。而且在网页端传回date类型,会报500 的错误,其实在这里就是传入参数错误的意思

而要解决这个问题,在jqGrid文档里面有一个自定义的数据格式,例如在colModel属性中:

{name:'birth',align:'center',formatter:currencyformatter,width:150,editable:true},

就是这个formatter,它的值为一个js函数,这个函数会传入三个值,cellvalue为这一行的数据,一般我们就用到这一个就够了。所以我们只要在下面写上一个将long类型的数据装换为date类型的js函数就可以实现了,但是js里面没有直接将long类型转换为date类型的接口,所以我就参照j别人的经验写一个:

    function currencyFmatter (cellvalue, options, rowObject) 
 
        { 
           
            Date.prototype.format=function(fmt) {       
               var o = {       
               "M+" : this.getMonth()+1, //月份       
               "d+" : this.getDate(), //日       
               "h+" : this.getHours()%12 == 0 ? 12 : this.getHours()%12, //小时       
               "H+" : this.getHours(), //小时       
               "m+" : this.getMinutes(), //分       
               "s+" : this.getSeconds(), //秒       
               "q+" : Math.floor((this.getMonth()+3)/3),//季度       
               "S" : this.getMilliseconds()//毫秒       
               };       
               var week = {       
               "0" : "\u65e5",       
               "1" : "\u4e00",       
               "2" : "\u4e8c",       
               "3" : "\u4e09",       
               "4" : "\u56db",       
               "5" : "\u4e94",       
               "6" : "\u516d"      
               };       
               if(/(y+)/.test(fmt)){       
                    fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));       
               }       
               if(/(E+)/.test(fmt)){       
                    fmt=fmt.replace(RegExp.$1,((RegExp.$1.length>1) ? (RegExp.$1.length>2 ?"\u661f\u671f" :"\u5468") :"")+week[this.getDay()+""]);       
               }       
               for(var kin o){       
                    if(new RegExp("("+ k +")").test(fmt)){       
                        fmt = fmt.replace(RegExp.$1,(RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));       
                    }       
               }       
               return fmt;       
            }
 
 
		//主要为这里
            var date =new Date(); 
            date.setTime(cellvalue); 
            var s=date.format('yyyy-MM-dd HH:mm:ss');
            return s; 
        }


这样我们就可以自己在最下面返回前给他格式化一下并选择你需要的格式就OK啦,当然,返回的并不仅仅只可以是数据,也可以是html中的DOM,给他加小图标啊什么的,都是可以的。


至于返回后台时我们就将这个date类型改为String,然后在给他修改为date类型就可以成功的存入数据库了!


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值