當呼叫JSON.stringify將物件轉換為對應的字串時,如果包含時間對象,時間對象會轉換為國家標準時間(ISO),而不是目前國家區域的時間,測試程式碼如下:
<script><br />
//var o = new Date();<br />
//console.log(o.toString())//中國時區時間,格式如「Wed Jun 11 2014 10:51:42 GMT 0800」<br />
//console.log(JSON.stringify(o)); //輸出國際標準時間(ISO),減少了8個小時 格式如「2014-06-11T02:51:42.624Z」<br />
</script>
要想JSON.stringify轉換日期物件Date回傳目前所在國家的時區,而不是國際標準時間,可以重寫Date物件的prototype的toJSON方法,回傳自訂時間格式,因為JSON.stringify呼叫的就是Date物件的toJSON方法,範例如下:
<script><br />
Date.prototype.toJSON = function () { return this.toLocaleString(); }<br />
var o = new Date();<br />
console.log(o.toString())//預設格式:「Wed Jun 11 2014 10:51:42 GMT 0800」<br />
console.log(JSON.stringify(o)); //輸出自訂的本地時間:「2014年6月11日 10:57:27」<br />
</script>