javascript函数,用于检查实际时间是否介于事件的开始时间和结束时间之间

javascript函数,用于检查实际时间是否介于事件的开始时间和结束时间之间,javascript,Javascript,我正在开发一个网站,用户可以选择各种事件并将其添加到他们的时间线中。每个事件都有一个打开时间和一个关闭时间,从现在起,它们在db中保存为INT。 例如,一个事件在9点开始,在18点结束。我需要一个javascript函数来检查当用户添加事件时事件是否打开……为了简单起见,让我们假设我根据实际时间进行检查。 在正常情况下(活动从9点开始,到18点结束),我没有任何问题要检查,我发现从18点开始,到2点结束的活动存在一些问题。我将事件分为两类:结束日期>开始日期和结束日期oranization){

我正在开发一个网站,用户可以选择各种事件并将其添加到他们的时间线中。每个事件都有一个打开时间和一个关闭时间,从现在起,它们在db中保存为INT。 例如,一个事件在9点开始,在18点结束。我需要一个javascript函数来检查当用户添加事件时事件是否打开……为了简单起见,让我们假设我根据实际时间进行检查。 在正常情况下(活动从9点开始,到18点结束),我没有任何问题要检查,我发现从18点开始,到2点结束的活动存在一些问题。我将事件分为两类:结束日期>开始日期和结束日期<开始日期,但我不知道如何检查第二种情况

谢谢你的帮助

编辑这是我使用的代码,它为我工作(我从html中获取检查日期),也许它对某人有帮助

        var dataSelezionata = $('#dataSelezionata').html();
        var dataExplode = dataSelezionata.split("/");
        var dataSelezionata = dataExplode[1]+"/"+dataExplode[0]+"/"+dataExplode[2];
        dataSelezionataJavascript = new Date(dataSelezionata);
        var oreAttuali = dataSelezionataJavascript.getHours();
        var oraInizio = parseInt($('#oraInizio').html(), 10);
        var oraFine = parseInt($('#oraFine').html(), 10);
        if (oraInizio && oraFine){
            if (oraFine > oraInizio){
                console.log('ora prima delle 24');
                if (!(oreAttuali >= oraInizio && oreAttuali < oraFine)){
                    alert ("L'evento da lei selezionato non e' disponibile il giorno "+dataSelezionataJavascript.toLocaleDateString()+" alle "+dataSelezionataJavascript.toLocaleTimeString()+"");
                    return;
                }
            }
            if (oraFine < oraInizio){
                console.log('ora fine dopo le 24');
                var tempoApertura = (24 - oraInizio) + oraFine;
                var dataInizio = new Date (dataSelezionataJavascript.getFullYear(), dataSelezionataJavascript.getMonth(), dataSelezionataJavascript.getDay(), oraInizio);
                var dataFine = new Date (dataSelezionataJavascript.getFullYear(), dataSelezionataJavascript.getMonth(), dataSelezionataJavascript.getDay(), oraInizio+tempoApertura);
                if (!(dataSelezionataJavascript >= dataInizio && dataSelezionataJavascript < dataFine)){
                    alert ("L'evento da lei selezionato non e' disponibile il giorno "+dataSelezionataJavascript.toLocaleDateString()+" alle "+dataSelezionataJavascript.toLocaleTimeString()+"");
                    return;
                }
            }
        }
var-dataSelezionata=$('#dataSelezionata').html();
var dataExplode=dataSelezionata.split(“/”);
var dataSelezionata=dataExplode[1]+“/”+dataExplode[0]+“/”+dataExplode[2];
DataSelezionatJavaScript=新日期(dataSelezionata);
var oreAttuali=dataSelezionataJavascript.getHours();
var oranizio=parseInt($('#oranizio').html(),10);
var oraFine=parseInt($('#oraFine').html(),10);
if(oranization&&oraFine){
如果(oraFine>oranization){
控制台日志(“ora prima delle 24”);
如果(!(oreAttuali>=Oranization&&oreAttuali=Datanization&&dataSelezionataJavascript
为什么不使用内置的javascript日期对象:

比如:

start = new Date(2011, 3, 10, 8, 0, 0); //Note that the month is 0-indexed
end = new Date(2011, 3, 10, 10, 0, 0);
now = new Date();

if(start <= now && now < end)
{
    // Date & time ok
}
start=新日期(2011,3,10,8,0,0)//请注意,月份是0索引的
结束=新日期(2011年3月10日10月0日);
现在=新日期();

如果(开始为什么不使用内置javascript日期对象:

比如:

start = new Date(2011, 3, 10, 8, 0, 0); //Note that the month is 0-indexed
end = new Date(2011, 3, 10, 10, 0, 0);
now = new Date();

if(start <= now && now < end)
{
    // Date & time ok
}
start=new Date(2011,3,10,8,0,0);//请注意,该月的索引为0
结束=新日期(2011年3月10日10月0日);
现在=新日期();

如果(开始对于超过午夜的事件(或任何事件),只需将事件的持续时间添加到开始时间,那么对于8小时的事件:

// Set start
var start = new Date(2011, 4, 3, 18);  // 3 May, 1800

// Set finish for 8 hours later
var finish = new Date(2011, 4, 3, 18+8); // 4 May, 0200

并按照thomasa88的建议进行日期比较。

对于超过午夜的事件(或任何事件),只需将事件的持续时间添加到开始时间,因此对于8小时的事件:

// Set start
var start = new Date(2011, 4, 3, 18);  // 3 May, 1800

// Set finish for 8 hours later
var finish = new Date(2011, 4, 3, 18+8); // 4 May, 0200

然后按照thomasa88的建议进行日期比较。

也许可以,我必须用getFullYear、getMonth()和getDate()得到当前的日期/月/年,然后再加上1到天……但我必须考虑到1月31日……Nicola我想建议你为持续时间加上毫秒数(end=start+hours*60*60*1000)但是RobG的解决方案看起来更干净。也许它可以工作,我必须使用getFullYear、getMonth()和getDate()获取当前日期/月/年然后我在一天中加上1…但我必须考虑到1月31日…@Nicola我打算建议你在持续时间中加上毫秒数(end=start+hours*60*60*1000),但是RobG的解决方案看起来更干净。Thx,我想就是这样了!今天早上我会试试,然后我标记你的答案!)Thx,我想就是这样!今天早上我会试试,然后我会记下你的答案!:)