2

週を増減するためのボタンがあります。現在の週の開始日と終了日を表示する必要があります。増分ボタンをクリックすると、次の週の開始日と終了日が表示されます。もう一度クリックすると、次の開始日と終了日が表示されます。減少ボタンについても同様です。

var i = 0;
    var curr = new Date; // get current date
    var first = curr.getDate() - curr.getDay(); // First day is the day of the month - the day of the week
    var last = first + 6; // last day is the first day + 6
    $('#btnPrevWeek,#btnNextWeek').click(function () {

        if ($(this).is('#btnNext')) {
            first = first + 7;
            last = last + 7;

            var firstday = new Date(curr.setDate(first)).toUTCString();
            var lastday = new Date(curr.setDate(last)).toUTCString();

            var startDatePieces = firstday.split(/[\s,]+/);
            var endDatePieces = lastday.split(/[\s,]+/);

            var startDate = startDatePieces[2] + " " + startDatePieces[1] + " " + startDatePieces[3];
            var endDate = endDatePieces[2] + " " + endDatePieces[1] + " " + endDatePieces[3];
            $('#lblWeekStartDate').html(startDate);
            $('#lblWeekEndDate').html(endDate);
        }
        else {
            first = first - 7;
            last = last - 7;

            var firstday = new Date(curr.setDate(first)).toUTCString();
            var lastday = new Date(curr.setDate(last)).toUTCString();

            var startDatePieces = firstday.split(/[\s,]+/);
            var endDatePieces = lastday.split(/[\s,]+/);

            var startDate = startDatePieces[2] + " " + startDatePieces[1] + " " + startDatePieces[3];
            var endDate = endDatePieces[2] + " " + endDatePieces[1] + " " + endDatePieces[3];
            $('#lblWeekStartDate').html(startDate);
            $('#lblWeekEndDate').html(endDate);
        }
    })

Sep 15 2013-Sep 21 2013という形式で日付を表示します。

今月のコードは正常に動作していますが、その後は正常に動作していません。問題を解決するのを手伝ってください。

4

2 に答える 2

0

犯人はvar curr = new Date;

月の境界、つまり30日以上を超えるとすぐに、日の計算が台無しになります

var curr = new Date; 日付を計算するたびに新しいものを取れば、問題は解決します。

作業フィドルを参照してください。

于 2013-09-06T13:33:04.200 に答える