調用JSON.stringify將對象轉為對應的字符串時,如果包含時間對象,時間對象會被轉換為國家標准時間(ISO),而不是當前國家區域的時間,測試代碼如下:
復制代碼 代碼如下:
<script>
//var o = new Date();
//console.log(o.toString())//中國時區時間,格式如“Wed Jun 11 2014 10:51:42 GMT+0800”
//console.log(JSON.stringify(o)); //輸出國際標准時間(ISO),減少了8個小時 格式如“2014-06-11T02:51:42.624Z”
</script>
要想JSON.stringify轉換日期對象Date返回當前所在國家的時區,而不是國際標准時間,可以重寫Date對象的prototype的toJSON方法,返回自定義時間格式,因為JSON.stringify調用的就是Date對象的toJSON方法,示例如下:
復制代碼 代碼如下:
<script>
Date.prototype.toJSON = function () { return this.toLocaleString(); }
var o = new Date();
console.log(o.toString())//默認格式:“Wed Jun 11 2014 10:51:42 GMT+0800”
console.log(JSON.stringify(o)); //輸出自定義的本地時間:“2014年6月11日 10:57:27”
</script>