0

在这里,我有一个函数用于计算两个时间变量之间的差异,startend,并将输出显示为“过去”、“当前”或“未来”。

我能够计算“当前”和“未来”值,但“过去”没有运气。这是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

您应该比较 的值someDate.getTime(),因为它将为您提供一个表示 unix 纪元的整数(自 1970 年 1 月 1 日以来经过的时间),这将是可比较和可减去的。

我编辑了小提琴:http: //jsfiddle.net/9jk6a/12/

干杯

于 2012-11-22T01:36:31.007 回答
0

这是多余的:

 var difference = currentTime - startTime; 

 if (difference > 0 && currentTime > startTime)

给定任务,difference > 0并且currentTime > 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 回答