Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript时间比较:实现这一点的最佳方法是什么?_Javascript_Jquery_Html_Date_Date Format - Fatal编程技术网

Javascript时间比较:实现这一点的最佳方法是什么?

Javascript时间比较:实现这一点的最佳方法是什么?,javascript,jquery,html,date,date-format,Javascript,Jquery,Html,Date,Date Format,这里有一个函数,我用它来计算两个时间变量之间的差值,start和end,并将输出显示为“过去”、“当前”或“未来” 我能够计算“当前”和“未来”的值,但“过去”没有运气。这是答案,任何帮助都会很好 另一方面,我更喜欢一种无插件的方式来实现这一点 //My Start time and End time var start = "Mon Nov 22 2012 08:45:00 GMT+0800 (Malay Peninsula Standard Time)"; var end = "Mon No

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

我能够计算“当前”和“未来”的值,但“过去”没有运气。这是答案,任何帮助都会很好

另一方面,我更喜欢一种无插件的方式来实现这一点

//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!");
    }
}​
//我的开始时间和结束时间
var start=“2012年11月22日星期一08:45:00 GMT+0800(马来半岛标准时间)”;
var end=“2012年11月22日星期一10:15:00 GMT+0800(马来半岛标准时间)”;
//调用测试函数
测试(开始、结束);
//计算函数
功能测试(开始时间、结束时间){
开始时间=新日期(开始时间);
endTime=新日期(endTime);
var currentTime=新日期();
var差异=当前时间-开始时间;
如果(差异>0&¤tTime>开始时间){
警惕(“过去!”);
} 
如果(startTime

链接到

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

我编辑了小提琴:


干杯

叹气!!我只需要睡一会儿。它正在工作,下面是更新的JSFIDLE:

谢谢所有帮助过我的人

//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!");
    }
}​
//我的开始时间和结束时间
var start=“2012年11月23日星期一08:45:00 GMT+0800(马来半岛标准时间)”;
var end=“2012年11月23日星期一10:15:00 GMT+0800(马来半岛标准时间)”;
//调用测试函数
测试(开始、结束);
//计算函数
功能测试(开始时间、结束时间){
开始时间=新日期(开始时间);
endTime=新日期(endTime);
var currentTime=新日期();
var差异=当前时间-开始时间;
如果(开始时间<结束时间&&结束时间<当前时间){
警惕(“过去!”);
} 
如果(startTime
这是多余的:

 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");
}
if(开始时间>结束时间){
抛出“无效范围:结束先于开始”;
}
if(开始时间<当前时间){
如果(结束时间<当前时间){
警报(“过去”);
}否则{
警报(“当前”);
}
}否则{
警报(“未来”);
}

所以…过去是当
start
时,当前是当
start
时,未来是当
current
时?这没有什么意义。我看不出jQuery中没有臭味,我们已经被炒了!!你不应该期望Date在所有浏览器中都一致地解析字符串,例如。”2012年11月22日星期一08:45:00 GMT+0800“可能被视为无效日期,因此符合条件的浏览器将返回
NaN
,其他浏览器将忽略不正确的日期并返回2012年11月22日星期四的日期对象。将其分解并手动解析,然后您将得到一致的结果。不需要使用
getTime
,使用日期对象进行算术运算实际上会调用它(顺便说一句,时间值是UTC,这里没有任何区别)。