PHP 产生随机时间

<?function rand_time($a,$b){$a=strtotime($a);$b=strtotime($b);return date( "Y-m-d H:m:s", mt_rand($a,$b));}$date1="2010-05-10 20:03:01";$date2="2010-05-11 20:21:32";$num = 10;$i=0;while ($i < $num){ $date = rand_time($date1,$date2); $date1 = $date; $i++; echo "$date<br>";}?>我想让它每次产生的随机时间是不超过前一个随机时间的但是输出结果是2010-05-11 18:05:142010-05-11 19:05:102010-05-11 19:05:582010-05-11 19:05:532010-05-11 19:05:352010-05-11 20:05:012010-05-11 20:05:032010-05-11 20:05:522010-05-11 20:05:352010-05-11 20:05:38很明显 后面的时间能比前面的时间早请问怎么解决?或者如何写一段代码产生N个随机时间分布在一个时间轴上(按升序排列,格式为Y-m-d H:m:s)最后,如果判断产生同样时间后跳出循环?呃 大部分是正常的 但是有后者比前者早的如2010-05-11 20:05:032010-05-11 20:05:522010-05-11 20:05:35
2026年09月26日 08:39
有5个网友回答
网友(1):

PHP 中的 strtotime() 与 mt_rand() 函数可以实现

相关函数说明:

strtotime() 函数将任何英文文本的日期时间描述解析为 Unix 时间戳。
mt_rand() 使用 Mersenne Twister 算法返回随机整数。

实现两个时间中随机时间的基本原理是:
先把两个时间解析为时间戳(相当于一个整数),然后用随机函数随机这两个整数,得到中间的时间戳,然后还原为时间。

例如:
//先定义一个可以生成随机时间的函数
function rand_time($start_time,$end_time){

$start_time = strtotime($start_time);
$end_time = strtotime($end_time);
echo date('Y-m-d H:i:s', mt_rand($start_time,$end_time));
}

$start_time = '2015-01-01 00:00:00';
$end_time = '2015-06-01 00:00:00';
//调用函数
rand_time($start_time,$end_time);
?>

网友(2):

用格林威治时间 也就是time() 整型的时间 在两个整数之间求随机数

网友(3):

function rand_time($a,$b)
{
$a=strtotime($a);
$b=strtotime($b);
return mt_rand($a,$b);
}
$date1="2010-05-10 20:03:01";
$date2="2010-05-11 20:21:32";
$num = 10;
$i=0;
while ($i < $num){
$date[] = rand_time($date1,$date2);
$i++;
}
asort($date);
foreach($date as $r){
$date1=date( "Y-m-d H:m:s", $r);
echo "$date1
";
}
?>

网友(4):

function rand_time($a,$b)
{
$a=strtotime($a);
$b=strtotime($b);
return date( "Y-m-d H:m:s", mt_rand($a,$b));
}
$date1="2010-05-10 20:03:01";
$date2="2010-05-11 20:21:32";
$num = 10;
$i=0;
while ($i < $num){
$date = rand_time($date1,$date2);
$datea[]= $date;
$i++;
}
sort($datea);

foreach ($datea as $values)
{

echo $values."
";

}
?>
你可以这样处理一下,就好了~O(∩_∩)O~

网友(5):

后面的时间能比前面的时间早?是比较晚吧。不是很明白。不知道把while循环中$date1 = $date改成$date2 = $date是不是你要的效果