使用Ibatis+Struts2+ExtJs 4.2开发系统,在前台用grid显示日期格式的数据时,在chrome底下显示正常,但在IE8里无法显示,日期项为空白。查询资料才得知,IE只能接受2013/04/01 22:15:11
解决方案如下:
1、定义相转换日期的方法
//转换为可显示日期
function Todate(v) {
if(v == null)
{
return null;
}
var str = v.toString().substring(0,10);//因为我只要日期,,所以我只取T之前的数据2013-04-01
return new Date(Date.parse(str.replace(/-/g,"/")));//最后返回一个日期型的数据
};
2、Store里的设置
在Store里面对日期这个选项做如下设置:
{name: "orders_date", type: ‘date’,convert: Todate}
3、ColumnMode中的设置
{ align:’center’, header: "订单日期", dataIndex: ‘orders_date’, width: 80, sortable: true, renderer : Ext.util.Format.dateRenderer(‘Y-m-d’) }
网络中有其它的解决方案,但是我试过都不行,最后这个是改编别人的方法才得已解决的。原文如下:
其它类似问题如下:
===================
从数据库中取出来的时间类型的数据,Json化以后会出现形如:\/date(125465701)\/ 样子的数据,这样的数据在Grid中无法直接显示成合法的日期形式。这个要在前台处理一下。首先定义个函数:
//转换为可显示日期 function Todate(v) {
if(v == null)
{
return null;
} var d = new Date(); var str = v.toString(); var str1 = str.replace("/Date(", ""); var str2 = str1.replace(")/", ""); var dd = parseInt(str2); d.setTime(dd); return d; };
在Store里面只对日期这个选项做如下设置:
{ name: ‘TXRQ’, type: ‘date’, dateFormat: ‘Y-m-d’, convert: Todate }
在ColumnModel中要做如下设置:
{ header: ‘填写日期’, dataIndex: ‘TXRQ’, renderer: Ext.util.Format.dateRenderer(‘Y年m月d日’), sortable: true, width: 95 }
这样就可以显示正常显示日期数据了数据。
这个方法只是我自己摸索出来的,网上还有其他不同的做法,这里算是对自己的总结吧,欢迎大家批评指正。
谢谢!
===================
带着我的相机和电脑,远离繁华,走向空旷。