2016-09-12 1 views
1

質問はthis oneと似ていますが、ISO文字列を処理する必要があります。JavaScriptでISO日付文字列をインクリメントする(例: '2014-03-30' - > '2014-03-31')

私は他の質問から解決策を適応しようとしました:

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年3月30日')が私に '2014年3月30日' を与え

(スライスの前に完全な文字列は '2014-03-30T23:00:00.000Z' です)

ん誰もがなぜこれが起こり、どのようにそれを解決するか知っていますか?

+0

ではなく、 'setUTCDdate'と' getUTCDate'を試してみてください。それは夏時間の問題のようです。 – Bergi

答えて

1

これは、その日に発生した夏時間調整によって発生します。代わりにUTCDateを使用してMarch 30, 2014: Europe starts Daylight Saving Time

修正それを:

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

パーフェクト、ありがとう! –

関連する問題