1

私は現在、劇場のウェブサイトの予約ページを作成しようとしています。ショーの日付は特定の曜日に設定されていますが、年間を通じて無期限に実行されます。

私の現在の脳をくすぐる仕事は、ショーの日付を正しく更新して、今日の日付に最も近い適切な数値の日付にする関数を作成することです。

したがって、今日の日付から、1 月 25 日の金曜日、1 月 26 日の土曜日、1 月 30 日の水曜日のオプションを表示する必要があり、明日 (2013 年 1 月 25 日金曜日) にアクセスすると、金曜日の日付が 2 月 1 日に変更されます (つまり、来週金曜日上映)。

関数は次のようになると思います(論理的に):

updateShowDates(function(){
var todaysdate = getDate
var todayWeekday = getDay
var showWeekday = document.getElementByName('datepicker').value
var lengthtotarget = count number of days between todayWeekday and target weekday (i.e. Wednesday)
newShowDate = todaysdate + lengthtotarget
document.getElementByName('datepicker').innerHTML=newShowDate;
});

これが機能する要素の HTML は次のとおりです。

<select id="dateselect" size="3">

<option value="Wednesday" title="Wednesday" name="datepicker">

    Wednesday

</option>

<option value="Friday" title="Friday" name="datepicker">

    Friday

</option>

<option value="Saturday" title="Saturday" name="datepicker">

    Saturday

</option>

</select>

私はJavascriptに少し慣れていません.しばらく前に、これに非常に役立つリソースを見つけました.

機能する関数を作成するための助けをいただければ幸いです。これは大学の授業のためのものであり、もちろん私は可能な限り最高の点数を獲得しようとしています.

4

1 に答える 1

2

JavaScript では、減算演算子を使用して 2 つの日付の差を計算できます。これにより、2 つの日付の差が秒単位で返されます。その後、Math.abs関数を使用して差の絶対値を取得できます。(実際、この場合、ショーの日付は常に未来であるため、これは必要ありません。) を使用array.sortして、今日の日付との差で日付を並べ替えることもできます。

結果は次のようになると思います。このコードを実際にテストしたことはありませんが、経験に基づいた推測です。

function getNextShowTime(showTimes) {
    var x, now, soonest, offset;
    now = date;
    offset = Infinity;
    for(x = 0; x < showTimes.length; x++) {
        if (showTimes[x] - now < offset) {
            offset = showTimes[x] - now;
            soonest = showTimes[x];
        }
    }
    return soonest;
}

私が提供した機能は、最も早い上映日を提供するはずです。複数のショーの日付を検索して時系列で並べ替えたい場合は、 を使用することをお勧めしますarray.sort。過去の番組も除外したい場合があります。これは大学の授業の演習だとおっしゃっていましたので、お任せします。

編集:提供されているサンプル コードは、さまざまな上映時間にわたって繰り返されます。ループの先頭では、soonestis NULL およびoffsetisInfinityです。反復ごとに、表示時間が現在の時間および と比較されoffsetます。結果が 未満の場合offset、差は に割り当てられoffset、上映時間は に割り当てられsoonestます。したがって、ループの最後に、offsetは次のショー時間までの時間でありsoonest、ショー時間である必要があります。

于 2013-01-24T19:24:48.993 に答える