0

startここに、2つの時間変数との差を計算しend、出力を「過去」、「現在」、または「将来」として表示するために使用する関数があります。

「現在」と「将来」の値を計算することはできましたが、「過去」ではうまくいきませんでした。これがjsFiddleであり、何か助けがあれば素晴らしいと思います。

ちなみに、私はこれを実現するためにプラグインなしの方法を好みます。

//My Start time and End time
var start = "Mon Nov 22 2012 08:45:00 GMT+0800 (Malay Peninsula Standard Time)";
var end = "Mon Nov 22 2012 10:15:00 GMT+0800 (Malay Peninsula Standard Time)";

//Calling to test function
test(start, end);

//Function to calculate 
function test(startTime, endTime) {
    startTime= new Date(startTime);
    endTime= new Date(endTime);
    var currentTime = new Date();
    var difference = currentTime - startTime; 

    if (difference > 0 && currentTime > startTime) {
        alert ("Past!");
    } 

    if(startTime < currentTime && currentTime < endTime){ 
        alert("Current!");
    }

    if(difference < -1){
        alert("Future!");
    }
}​

jsFiddleへのリンク

4

3 に答える 3

1

はぁ!!少し寝るだけです。動作しており、更新されたjsFiddleは次のとおりです。http://jsfiddle.net/9jk6a/9/

助けてくれたみんなに感謝します。

//My Start time and End time
var start = "Mon Nov 23 2012 08:45:00 GMT+0800 (Malay Peninsula Standard Time)";
var end = "Mon Nov 23 2012 10:15:00 GMT+0800 (Malay Peninsula Standard Time)";

//Calling to test function
test(start, end);

//Function to calculate 
function test(startTime, endTime) {
    startTime= new Date(startTime);
    endTime= new Date(endTime);
    var currentTime = new Date();
    var difference = currentTime - startTime; 

    if (startTime < endTime && endTime < currentTime) {
        alert ("Past!");
    } 

    if(startTime < currentTime && currentTime < endTime){ 
        alert("Current!");
    }

    if(currentTime < startTime && startTime < endTime){
        alert("Future!");
    }
}​
于 2012-11-22T01:41:30.360 に答える
0

You should compare the values of someDate.getTime(), as it will give you an integer representing the unix epoch (time ellapsed since 1/1/1970), wich will be comparable and substractable.

I edited the fiddle: http://jsfiddle.net/9jk6a/12/

Cheers

于 2012-11-22T01:36:31.007 に答える
0

これは冗長です:

 var difference = currentTime - startTime; 

 if (difference > 0 && currentTime > startTime)

割り当てが与えられ、まったく同じ条件をテストしていますdifference > 0currentTime > startTime一方が真の場合、もう一方も常に真になるため、両方をテストする理由はありません。

本当に、あなたが必要とするのはこれだけです:

if (startTime > endTime) {
   throw "Invalid range: end precedes start";
}

if (startTime < currentTime) {
    if (endTime < currentTime) {
         alert("Past");
    } else {
         alert("Current");
    }
} else {
  alert ("Future");
}
于 2012-11-22T01:43:21.593 に答える