日付に 5 日を適切に追加したくない次のコードがあります。コードは次のとおりです。
// Grab previous session date so we can add 5 days and get new minDate
var currdate = new Date();
var one_day=1000*60*60*24;
var info = '';
var minDateBase = document.getElementById("class" + prevSession + "_date").value;
var maxDateBase = document.getElementById("class1_date").value;
var minDateBits = minDateBase.split('-');
var maxDateBits = maxDateBase.split('-');
// Example Date working date 08-27-2012
// Example Date Not working date 09-03-2012
var minDate = new Date(minDateBits[2],minDateBits[0],minDateBits[1]);
var maxDate = new Date(maxDateBits[2],maxDateBits[0],maxDateBits[1]);
info = 'Selected Session Date: ' + minDate + '.' + "\n";
info = info + 'Class 1 date : ' + maxDate + '.' + "\n";
var newMinDate = new Date();
var newMaxDate = new Date();
newMinDate.setUTCDate(minDate.getUTCDate() + 5);
newMaxDate.setUTCDate(maxDate.getUTCDate() + 42);
info = info + 'New Min. Date : ' + newMinDate + '.' + "\n";
info = info + 'New Max Date : ' + newMaxDate + '.' + "\n";
var maxDateDiff = newMaxDate.getTime() - currdate.getTime();
var minDateDiff = newMinDate.getTime() - currdate.getTime();
minDateDiff = Math.ceil(minDateDiff/one_day);
maxDateDiff = Math.ceil(maxDateDiff/one_day);
info = info + 'Min. Date Diff : ' + minDateDiff + '.' + "\n";
info = info + 'Max Date Diff : ' + maxDateDiff + '.' + "\n";
alert (info);
最後の作業「情報」アラートからの出力は次のとおりです。
選択されたセッションの日付: 2012 年 8 月 20 日月曜日 00:00:00 GMT-0600 (山地夏時間)。
クラス 1 の日付: 2012 年 8 月 20 日月曜日 00:00:00 GMT-0600 (山地夏時間)。
新しい最小。日付: 2012 年 8 月 25 日土曜日 09:13:19 GMT-0600 (山地夏時間)。
新しい最大日付: Mon Oct 01 2012 09:13:19 GMT-0600 (山地夏時間)。
最小。日付差: 13.
最大日付差: 50.
そして、これが最後の非動作「情報」からの出力です..
選択されたセッションの日付: Mon Sep 03 2012 00:00:00 GMT-0600 (山岳部夏時間)。
クラス 1 の日付: 2012 年 9 月 3 日月曜日 00:00:00 GMT-0600 (山岳部夏時間)。
新しい最小。日付: 2012 年 8 月 8 日水曜日 09:15:09 GMT-0600 (山岳部夏時間)。
新しい最大日付: Fri Sep 14 2012 09:15:09 GMT-0600 (山地夏時間)。
最小。日付差 : -4.
最大日付差分: 33.
「最小日付」が同じ月の値を保持していて、時差が-4になる理由はありますか?
ありがとう、
シルバータイガー
** アップデート **
私の最後のアイデアは問題に対処したようで、反映するように次のコードを更新しました。
var minDate = new Date(minDateBits[2],parseFloat(minDateBits[0]) - 1,minDateBits[1]);
var maxDate = new Date(maxDateBits[2],parseFloat(maxDateBits[0]) - 1,maxDateBits[1]);
info = 'Selected Session Date: ' + minDate + '.' + "\n";
info = info + 'Class 1 date : ' + maxDate + '.' + "\n";
var newMinDate = new Date();
var newMaxDate = new Date();
newMinDate.setTime(minDate.getTime() + (5 * one_day));
newMaxDate.setTime(maxDate.getTime() + (42 * one_day));
テストを続けますが、最初の数回の試行で機能しました...