EasyUI 的DataGrid中DateTime的格式化問題

想必用過EasyUI的朋友們都應該會遇到這樣的狀況吧:(下圖)jquery

image

在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);
                        }
                    },

按照上面的寫法,應該是沒問題的了,因而再次運行效果圖以下:工具

image

奇怪了,怎麼還不是咱們想要的格式呢,那個js函數目測是沒有問題的,若是有問題的話便應該是那個根本就不是unix時間戳,可是這個字符串也太相似了吧,並且即便前面的年份出了問題,那後面的時間都是很正確的啊,和數據庫的基本符合,因而打開網頁經過站長工具的unix時間戳轉化網站來肯定下這個字符串究竟是什麼網站

image

圖中能夠看到基本就是unix時間戳,只是後面多了幾個數字,不懂究竟是什麼,不過居然那麼接近的話,我直接把它後面的幾個截去不就好了嗎,最後發現這個方法的確可行/嘻嘻~~~~,因而最後的DataGrid的格式化器便這樣寫了spa

formatter: function (date) {
                            var pa = /.*\((.*)\)/;
                            var unixtime = date.match(pa)[1].substring(0,10);
                            return getTime(unixtime);
                        }

經過substring來截取前面的10個數字,組成的字符串即是咱們想要的unix時間戳了,陰差陽錯,居然就這麼給我答對了,因而結果便成了咱們想要的時間數據3d

image

儘管處理方法還有不少,這是隻是我想到的處理方法,也不是很複雜,如今的EasyUI應該是可以智能的作到這一步了吧,上面過去getTime的js函數,能夠經過Extend擴張到jquery中使用,這樣就不須要再每一個使用到這個方法的頁面都寫一次,重構了代碼,但願這裏的這個能幫到一些也遇到這種狀況的朋友一點點提示。unix

相關文章
相關標籤/搜索