2015-04-01 40 views
0

我用JavaScript創建了一個新的Date,時間正確,但在使用toISOString()進行轉換後,它已經落後了一個小時。爲什麼會這樣?JavaScript轉換後的時間比一小時後延遲

https://jsfiddle.net/73nfyxeL/

var createdDateTime = new Date('2015-04-01 11:53:00'); 
var isoCreatedDateTime = ""; 

alert(createdDateTime); 
isoCreatedDateTime = createdDateTime.toISOString().match(/(\d{4}\-\d{2}\-\d{2})T(\d{2}:\d{2}:\d{2})/); 
alert(isoCreatedDateTime[1] + ' ' + isoCreatedDateTime[2]); 
createdDateTime.setMinutes(createdDateTime.getMinutes() + 1); 

據我所知這應該不會更改本地時間(如夏令時),因爲我給它一個預先設定的時間,而不是一個時區。這是怎麼回事?

+0

'var createdDateTime = new Date('2015-04-01 11:53:00');'給出無效日期:) – mohamedrias 2015-04-01 11:06:37

+1

它應該是'var createdDateTime = new Date('2015-04-01T11:53: 00');' – mohamedrias 2015-04-01 11:07:24

+0

@mohamedrias工作。我想添加T將它設置爲UTC? – 2015-04-01 11:13:53

回答

2

toISOString method不僅格式化日期,而且首先將其轉換爲UTC。

您當地的時區與UTC之間的區別是一小時。

+0

這是正確的,請注意,UTC沒有夏令時的概念。所以如果代碼在上週工作並且本週似乎中斷了,那麼猜猜這個週末發生了什麼?英國從UTC時間切換到UTC + 1時間爲夏令時。 – funkwurm 2015-04-01 11:10:13