在JavaScript中增加ISO日期字符串(例如' 2014-03-30' - >' 2014-03-31')

时间:2016-09-12 14:39:09

标签: javascript

我的问题类似于this one,但我需要处理ISO字符串。

我试图从另一个问题调整解决方案:

var getNextDay = function(day) {
    var date = new Date(day);
    date.setDate(date.getDate() + 1);
    return date.toISOString().slice(0, 10);
};

这实际上适用于大多数情况,例如getNextDay(' 2014-03-31')返回' 2014-04-01'。

然而,getNextDay(' 2014-03-30')给了我' 2014-03-30' (切片前的完整字符串是' 2014-03-30T23:00:00.000Z')

有谁知道为什么会这样,以及如何解决它?

1 个答案:

答案 0 :(得分:1)

这是由该日期发生的夏令时调整引起的。 March 30, 2014: Europe starts Daylight Saving Time

使用UTCDate修复它:

var getNextDay = function(day) {
    var date = new Date(day);
    date.setUTCDate(date.getUTCDate() + 1);
    return date.toISOString().slice(0, 10);
};