2014-05-14 54 views
0

轉換日期爲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.

+0

...時區... – Ejaz

+1

剛纔在不同時區表達的時間點完全相同。 –

+1

請記住,「2014-02-21T17:30:00.000Z」中的最後一個「Z」表示時間確實是UTC。 – Neel

回答

1

爲什麼小時數和分鐘數發生變化?

因爲它沒有更多的印度標準時間表示爲顯示在控制檯,但UTC(ž烏魯時間中標示ISO 8601字符串)。

的時間應該是23分鐘必須是00

號如果你想創建一個UTC時間23:00,那麼你應該使用

var oDate = new Date(Date.UTC(2014,01,21,23,00,00)); 
0

當Date對象它返回一個表示使用toISOString()這符合ISO8601 standard例如日期的字符串上調用toJSON() YYYY-MM-DDTHH:MM:ss.sssZ。時區爲UTC始終爲,因此您的示例中有所不同。

Se here有關JavaScript中Date對象的更多信息。

沒有與問候你的例子提了幾件事情:

  1. 日期和時間是區域設置特定,您的瀏覽器建立此基礎上你的系統時鐘(你可以改變這一點)。
  2. 當您連載日期和時間時,此語言環境信息將爲轉換爲時間戳
  3. 如果你堅持這個時間戳在數據庫中,然後重新使用Date.parse()然後您的瀏覽器將在日期顯示該時間糾正你的當前時區信息到瀏覽器例如印度標準時間。

我創建了一個簡單的jsFiddle作爲示例。在我目前的GMT時區中,當查看winterDatesummerDate時,這是一個重要的例子,就像在夏季,我們將夏令時和提前時間輸入一小時。重要的是Javascript能夠理解這一點並捕捉時區,因此保留了發生時間的普遍價值。如果您更改系統的時區,然後重新加載瀏覽器,您將能夠看到自己的行爲。

我希望這可以幫助您更好地理解這種行爲,以及爲什麼它很重要。