轉換日期爲JSON一旦Date對象作爲,問題在JavaScript中
var oDate = new Date(2014,01,21,23,00,00);
它返回週五2014年2月21日23:00:00 GMT + 0530(印度標準時間)。但是,當我嘗試將其轉換爲JSON。
oDate.toJSON() // "2014-02-21T17:30:00.000Z"
爲什麼小時和分鐘都變了?小時數應爲23,分鐘數應爲00.
轉換日期爲JSON一旦Date對象作爲,問題在JavaScript中
var oDate = new Date(2014,01,21,23,00,00);
它返回週五2014年2月21日23:00:00 GMT + 0530(印度標準時間)。但是,當我嘗試將其轉換爲JSON。
oDate.toJSON() // "2014-02-21T17:30:00.000Z"
爲什麼小時和分鐘都變了?小時數應爲23,分鐘數應爲00.
爲什麼小時數和分鐘數發生變化?
因爲它沒有更多的印度標準時間表示爲顯示在你控制檯,但UTC(ž烏魯時間中標示ISO 8601字符串)。
的時間應該是23分鐘必須是00
號如果你想創建一個UTC時間23:00,那麼你應該使用
var oDate = new Date(Date.UTC(2014,01,21,23,00,00));
這實際上按預期工作並序列化爲UTC,因爲當您加載JSON對象時,您將再次獲得正確的Date。使用toJSON()時,時間以UTC存儲。
指定者:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toJSON
測試代碼:
var oDate = (new Date()).toJSON();
var pDate = new Date(oDate);
console.log("Serialized date object: " + oDate);
console.log("Actual date object: " + pDate);
只是爲了記錄在案,記得在「2014-02-21T17最後一個 「Z」: 30:00.000Z「表示時間確實是UTC
有關更多信息mation: -
http://en.wikipedia.org/wiki/ISO_8601
作爲參考: -
當Date對象它返回一個表示使用toISOString()
這符合ISO8601 standard例如日期的字符串上調用toJSON()
YYYY-MM-DDTHH:MM:ss.sssZ。時區爲UTC始終爲,因此您的示例中有所不同。
Se here有關JavaScript中Date對象的更多信息。
沒有與問候你的例子提了幾件事情:
Date.parse()
然後您的瀏覽器將在日期顯示該時間糾正你的當前時區信息到瀏覽器例如印度標準時間。我創建了一個簡單的jsFiddle作爲示例。在我目前的GMT時區中,當查看winterDate
和summerDate
時,這是一個重要的例子,就像在夏季,我們將夏令時和提前時間輸入一小時。重要的是Javascript能夠理解這一點並捕捉時區,因此保留了發生時間的普遍價值。如果您更改系統的時區,然後重新加載瀏覽器,您將能夠看到自己的行爲。
我希望這可以幫助您更好地理解這種行爲,以及爲什麼它很重要。
...時區... – Ejaz
剛纔在不同時區表達的時間點完全相同。 –
請記住,「2014-02-21T17:30:00.000Z」中的最後一個「Z」表示時間確實是UTC。 – Neel