資料庫取出塞給DO的時間一般是: Thu Nov 25 2010 18:29:21 GMT+0800 這種格式
在使用jst動態渲染模板的時候,這樣會直接按照字串輸出到頁面,所以需要將時間進行轉換,成普通的2010-10-10的格式
有兩種方式可以解決,一是通過將外面的js轉換方法作為一個參數的形式直接塞進渲染參數中,比如:
var change = function(time){ ... } var param = {"change":change};
這樣在jst模板中,需要寫成
{var timeStr = change(_item.date)} ${timeStr}
還有一種推薦寫法,是將上述的js方法作為一種自訂標識符的形式,這樣在jst模板中只需要用諸如:
${_item.date|changeTime}
就可以完成自動轉換,具體的js代碼:
var myModifiers = { timeFormat : function(thisvalue){ return changeStrToFormatTimeStr(thisvalue); } }; var arr = function(arg){ return getLoops(arg,true); } var param = {"result":result,"func":arr}; if (null == result){ param = {"result":"","func":arr}; } param._MODIFIERS = myModifiers; $("commentShowDIV").innerHTML = TrimPath.parseTemplate($("commentDIVHTML").value).process(param);
// 將時間串轉換成特定的格式 function changeStrToFormatTimeStr(timeStr){ return formatTime(toTime(timeStr),"yyyy-MM-dd HH:mm"); } // 字串轉換成時間 function toTime(s){ var converted = Date.parse(s); var myDate = new Date(converted); if (isNaN(myDate)) { var arys= s.split('-'); myDate = new Date(arys[0],--arys[1],arys[2]); } return myDate; } // 時間格式轉換 function formatTime(date,formatStr) { var str = formatStr; var Week = ['日','一','二','三','四','五','六']; str=str.replace(/yyyy|YYYY/,date.getFullYear()); str=str.replace(/yy|YY/,(date.getYear() % 100)>9?(date.getYear() % 100).toString():'0' + (date.getYear() % 100)); str=str.replace(/MM/,date.getMonth()>9?date.getMonth().toString():'0' + date.getMonth()); str=str.replace(/M/g,date.getMonth()); str=str.replace(/w|W/g,Week[date.getDay()]); str=str.replace(/dd|DD/,date.getDate()>9?date.getDate().toString():'0' + date.getDate()); str=str.replace(/d|D/g,date.getDate()); str=str.replace(/hh|HH/,date.getHours()>9?date.getHours().toString():'0' + date.getHours()); str=str.replace(/h|H/g,date.getHours()); str=str.replace(/mm/,date.getMinutes()>9?date.getMinutes().toString():'0' + date.getMinutes()); str=str.replace(/m/g,date.getMinutes()); str=str.replace(/ss|SS/,date.getSeconds()>9?date.getSeconds().toString():'0' + date.getSeconds()); str=str.replace(/s|S/g,date.getSeconds()); return str; }