EasyUI 的DataGrid中DateTime的格式化問題


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

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的格式化器便這樣寫了

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

通過substring來截取前面的10個數字,組成的字符串便是我們想要的unix時間戳了,陰差陽錯,竟然就這么給我答對了,於是結果便成了我們想要的時間數據

image

盡管處理方法還有很多,這是只是我想到的處理方法,也不是很復雜,現在的EasyUI應該是能夠智能的做到這一步了吧,上面過去getTime的js函數,可以通過Extend擴張到jquery中使用,這樣就不需要再每個使用到這個方法的頁面都寫一次,重構了代碼,希望這里的這個能幫到一些也遇到這種情況的朋友一點點提示。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM