JSON.stringify時間的問題


使用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 }

 


免責聲明!

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



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