使用easyui獲取JSON時間數據時間數據時,通常是一長串的數字而不是我們想要的類似2018-11-01的普通時間格式。
此時我們就需要使用到關於JSON時間的格式化,而將時間轉化成我們想要的格式。
一般轉化格式
之前一直使用的 toLocaleDateString() 但是用着用着發現了bug,不同瀏覽器對於 toLocaleDateString() 的解析結果不同,所以很容易造成前一天調試好發現顯示正常了,等到第二天又會出現時間格式問題。
后面就換了一種方法,發現這個方法確實要比 toLocaleDateString() 更合適。
話不多說,直接上代碼吧
{field:'setupdate',title:'時間',width:100,align:'center',formatter:formatterdate,editor:{
type:'datebox',
options:{
required:true,
}
}} //使用的是easyui-datagrid數據網格
function formatterdate(val, row) { //在外部創建一個時間轉化函數 在 field 中進行調用
var date = new Date(val); return date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate(); }
這樣處理過后就能將時間正常的顯示出來了。當然這個轉化函數也可以直接在寫在 field 中,不過為了代碼的美觀,還是推薦寫在外部。
格式化后在進行行內編輯的時候,發現轉化后的時間無法在啟動修改編輯時,對 datebox 進行賦值,同時這時候 datebox 選定的日期無法傳輸到后台。
這時候舉要使用到JQuery 的$.extend 方法 對 dataGrid 的editors 進行繼承擴展
1 $.extend($.fn.datagrid.defaults.editors, { 2 datebox : { 3 init : function(container, options) { 4 var input = $('<input type="text">').appendTo(container); 5 input.datebox(options); 6 return input; 7 }, 8 destroy : function(target) { 9 $(target).datebox('destroy'); 10 }, 11 getValue : function(target) { 12 return $(target).datebox('getValue');//獲得舊值 13 }, 14 setValue : function(target, value) { 15 console.info(formatterdate(value)); 16 $(target).datebox('setValue', formatterdate(value));//設置新值的日期格式 17 }, 18 resize : function(target, width) { 19 $(target).datebox('resize', width); 20 } 21 } 22 });
這樣處理過后的時間就能夠進行一系列的操作了,