最干净的方式来判断3次是否在彼此的半小时内

时间:2010-04-08 02:59:32

标签: javascript jquery

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

我已经使用strtotime的Javascript实现将所有值转换为纪元格式,但不确定如何递归检查任何时间实际上相隔半小时。

我可以手动编写所有检查代码,但编写递归函数会更简洁(特别是如果理论上有超过3个时间段)。

谷歌做了一些研究,但没有运气。

有关在Javascript或Jquery中实现此功能的任何建议。

感谢。

3 个答案:

答案 0 :(得分:5)

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

编辑:我根本不愿意发布示例代码,但如果您的时间位于名为times的数组中:

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

答案 1 :(得分:1)

伪代码......

epochArrayOfTimes.sort();
for (i = 0, k = 1; k <= epochArrayOfTimes.size(); i++, k++) {
    if ( (epochArrayOfTimes[i] - epochArrayOfTimes[k]) <= 30 minutes) { alert/error }
}

答案 2 :(得分:0)

首先我想说,我不擅长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;
        }
    }
}