2015-04-01 66 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