代码之家  ›  专栏  ›  技术社区  ›  niggles

最清楚的方法来判断三次是否在半小时内

  •  4
  • niggles  · 技术社区  · 15 年前

    我在表单上有3个日期/时间输入框,用户不能在半小时内选择任何时间。

    我已经使用strotime的javascript实现将所有值转换为epoch格式,但不知道如何递归地检查任何时间实际上间隔半小时。

    我可以手工编写所有检查,但编写递归函数会更简洁(尤其是理论上超过3个时隙的情况)。

    做了一些谷歌调查,但没有运气。

    关于在javascript或jquery中实现这一点的任何建议。

    谢谢。

    3 回复  |  直到 15 年前
        1
  •  5
  •   jemfinch    15 年前

    对时间进行排序,然后查看相邻成员,并检查它们之间是否在30分钟(1800秒)内。

    编辑:如果您的时间是在一个名为 times :

    times.sort();
    for (i = 0; i < times.length-1, i++) {
      if (times[i+1] - times[i] < 1800) {
        return false;
      }
      return true;
    }
    
        2
  •  1
  •   Nicki    15 年前

    伪代码…

    epochArrayOfTimes.sort();
    for (i = 0, k = 1; k <= epochArrayOfTimes.size(); i++, k++) {
        if ( (epochArrayOfTimes[i] - epochArrayOfTimes[k]) <= 30 minutes) { alert/error }
    }
    
        3
  •  0
  •   Mark Tomlin    15 年前

    首先我想说,我不擅长javascript。所以如果这是错误的,请不要投票让我忘记。

    JavaScript:

    var time = ["1270690925", "1270696925", "1273696925"];
    var spaceTime = 60 * 30;
    
    for (var i in time)
    {
        for (var j in time)
        {
            if (time[i] - time[j] < spaceTime)
                alert("You must put a greater length between these two times: " + time[i] + " and " + time[j] + ".");
        }
    }
    

    基于此php代码:

    function timeCheck($timeArrays = array(), $spaceTime = 1800)
    {
        foreach ($timeArray as $time1)
        {
            foreach ($timeArray as $time2)
            {
                if ($time1 - $time < $spaceTime)
                {
                    # These items are not appropriately spaced.
                }
            }
        }
    }
    

    在php中尝试2(查看注释后):

    function timeCheck($times = array(), $interval = 1800)
    {
        sort($times);
        for ($i = 0, $j = 1, $k = count($times); $j < $k; ++$i, ++$j)
        {
            if (($times[$j] - $times[$i]) < $interval)
            {
                echo "{$times[$i]} is less then $interval away from {$times[$j]}." . PHP_EOL;
            }
        }
    }