使用Element UI控件el-date-picker后台傳值用到JSON.stringify轉換字符串傳后台發現輸出國際標准時間(ISO),減少了8個小時,
解決方式:
由於JSON.stringify解析Date是調用了Date對象的prototype的toJSON方法,所以我們重寫它就可以了,如下:
1 Date.prototype.format = function(fmt) { 2 var o = { 3 "M+" : this.getMonth()+1, //月份 4 "d+" : this.getDate(), //日 5 "h+" : this.getHours(), //小時 6 "m+" : this.getMinutes(), //分 7 "s+" : this.getSeconds(), //秒 8 "q+" : Math.floor((this.getMonth()+3)/3), //季度 9 "S" : this.getMilliseconds() //毫秒 10 }; 11 if(/(y+)/.test(fmt)) { 12 fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length)); 13 } 14 for(var k in o) { 15 if(new RegExp("("+ k +")").test(fmt)){ 16 fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length))); 17 } 18 } 19 return fmt; 20 } 21 /* 22 * 重寫時間的toJSON方法,因為在調用JSON.stringify的時候,時間轉換就調用的toJSON,這樣會導致少8個小時,所以重寫它的toJSON方法 23 */ 24 Date.prototype.toJSON = function () { 25 return this.format("yyyy-MM-dd hh:mm:ss"); // util.formatDate是自定義的個時間格式化函數 26 }