想必用过EasyUI的朋友们都应该会遇到这样的状况吧:(下图)jquery
在EasyUI中DataGrid中若是要显示DateTime的时间时候,便会显示上图这样的格式,很明显,这里的格式不会是咱们想要的,咱们想要的就大概如2014-10-30 13.29之类的才人性话,从数据库后台传过来的是一个DateTime类型,却显示成这样。正则表达式
对这个时间分析后,无心中发现,这个括号里面的不就是Unix时间戳吗?,那咱们把这个时间戳转一下不就好了??因而我写了一个js方法,把传入的字符串(Unix时间戳)转成咱们想要的时间格式。数据库
function getTime(/** timestamp=0 **/) { var ts = arguments[0] || 0; var t, y, m, d, h, i, s; t = ts ? new Date(ts * 1000) : new Date(); y = t.getFullYear(); m = t.getMonth() + 1; d = t.getDate(); h = t.getHours(); i = t.getMinutes(); s = t.getSeconds(); // 可根据须要在这里定义时间格式 return y + '-' + (m < 10 ? '0' + m : m) + '-' + (d < 10 ? '0' + d : d) + ' ' + (h < 10 ? '0' + h : h) + ':' + (i < 10 ? '0' + i : i) + ':' + (s < 10 ? '0' + s : s); }
而后在DataGrid中的时间这一项加入一个formatter 格式器来对其格式进行格式化。函数
{ field: 'Title', title: '标题', width: 500 }, { field: 'Author', title: '做者', width: 100 }, { field: 'CreateTime', title: '发布时间', width: 100, formatter: function (date) { var pa = /.*\((.*)\)/; //获取 /Date(时间戳) 括号中的字符串时间戳 的正则表达式 var unixtime = date.match(pa)[1]; //经过正则表达式来获取到时间戳的字符串 return getTime(unixtime); } },
按照上面的写法,应该是没问题的了,因而再次运行效果图以下:工具
奇怪了,怎么还不是咱们想要的格式呢,那个js函数目测是没有问题的,若是有问题的话便应该是那个根本就不是unix时间戳,可是这个字符串也太相似了吧,并且即便前面的年份出了问题,那后面的时间都是很正确的啊,和数据库的基本符合,因而打开网页经过站长工具的unix时间戳转化网站来肯定下这个字符串究竟是什么网站
图中能够看到基本就是unix时间戳,只是后面多了几个数字,不懂究竟是什么,不过居然那么接近的话,我直接把它后面的几个截去不就好了吗,最后发现这个方法的确可行/嘻嘻~~~~,因而最后的DataGrid的格式化器便这样写了spa
formatter: function (date) { var pa = /.*\((.*)\)/; var unixtime = date.match(pa)[1].substring(0,10); return getTime(unixtime); }
经过substring来截取前面的10个数字,组成的字符串即是咱们想要的unix时间戳了,阴差阳错,居然就这么给我答对了,因而结果便成了咱们想要的时间数据3d
尽管处理方法还有不少,这是只是我想到的处理方法,也不是很复杂,如今的EasyUI应该是可以智能的作到这一步了吧,上面过去getTime的js函数,能够经过Extend扩张到jquery中使用,这样就不须要再每一个使用到这个方法的页面都写一次,重构了代码,但愿这里的这个能帮到一些也遇到这种状况的朋友一点点提示。unix