我在表单上有3个日期/时间输入框,用户不能在半小时内选择任何时间。
我已经使用strtotime的Javascript实现将所有值转换为纪元格式,但不确定如何递归检查任何时间实际上相隔半小时。
我可以手动编写所有检查代码,但编写递归函数会更简洁(特别是如果理论上有超过3个时间段)。
谷歌做了一些研究,但没有运气。
有关在Javascript或Jquery中实现此功能的任何建议。
感谢。
答案 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;
}
}
}