0

基本的に現在の日時をリストと比較する関数を作成しようとしています。たとえば、8/22/13 の 0700 から 8/29 の 0700 までは「Joe Mama - phone number 555-5555」が返され、8/29 の 0700 から 9/5/13 の「0500」までは「」が返されます。アンジー・ダディ - 電話番号 555-5555". 「オンコール」スケジュール用です。

私ができた最善の方法は、日付を取得して == チェックを行うことでした。これは、あまりにも時間がかかり、真夜中にしか変更されません。1 時間単位で実行したい場合は、1 週間に 168 個の if/then ステートメントを作成する必要があります (1 週間の 1 時間ごとに 1 回)。

彼らが私を正しい方向に向けることができると思う人はいますか?もちろん、コードを書く人を探しているわけではありません。他にどのような用語を検索すればよいかわかりません。

編集(新しすぎて答えられません):

助けてくれたエルグウィンに感謝します!このようなものを探している人のために、最も簡単な方法を次に示します (最善ではありませんが、機能します)。時間をエポック時間に変換します (慣れていない場合は、wikipedia を参照してください)。変換を行うのは少し面倒ですが、比較ははるかに簡単です。

私のページのメモにリンクしたサイト (失われないように) は、時刻と日付をエポック時間に変換しますが、何らかの理由で、表示された時間の末尾にゼロを 3 つ追加する必要がありました。

それが理にかなっていることを願っています!ソース:

http://www.epochconverter.com/ http://www.w3schools.com/jsref/jsref_gettime.asp

<HTML>
<script type="text/javascript">

var d = new Date();
var n = d.getTime(); 

document.write(n)


if (n >=  1376913600000 && n <= 1377518400000)
 {
document.write("Joe Momma");
document.write(full)
}
if (n >=  1377518400000 && n <= 1378123200000)
 {
document.write("Angie Daddy");
document.write(full)
 }



</script>
</html>
4

1 に答える 1

0

各オンコールの開始時刻と終了時刻を配列に入れます。次に、現在の日付がインデックス付きの日付よりも大きい間、または最後からループする場合は小さい間、配列をループ処理します。

function whosoncall(){
    var oncall= [[1377068400000, 'Joe Mama', '555-5555'], 
    [1377759600000, 'Angie Daddy', '555-5555'], 
    [1378357200000, 'Some Body', '555-5555'], 
    [1378789200000, 'End coverage']];
    var L= oncall.length-1, 
    D= new Date().getTime();

    if(D<oncall[0][0] || D>oncall[L][0]) throw new Error('No oncall for this date');

    while(L && D<oncall[L][0])--L;

    return oncall[L][1]+' phone: '+oncall[L][2];
}
whosoncall();
于 2013-08-22T03:45:24.603 に答える