如何用php生成每天的随机时间?

时间:2015-03-16 11:03:38

标签: php datetime random

我想使用php在24小时内生成一个随机时间。以下是我到目前为止的情况:

srand(mktime(0, 0, 0));
$time = rand( 0, time() );
echo date("H:i", $time);

它似乎最初起作用,但几个小时后,时间略有变化。我先是16:41然后跳到16:47或接近那个。对此的任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:3)

如何做到这一点,

echo rand(0,23).":".str_pad(rand(0,59), 2, "0", STR_PAD_LEFT);
使用 mt_rand

更好

echo mt_rand(0,23).":".str_pad(mt_rand(0,59), 2, "0", STR_PAD_LEFT);

<强> DEMO

答案 1 :(得分:0)

每次加载网页时,您的代码都会生成新的随机时间。你应该创建一天的cookie。它会在一天后自动消失。你应该改变你的代码,如

if(!isset($_COOKIE["one_day_cookie"])){
 srand(mktime(0, 0, 0));
 $time = rand( 0, time() );
 setcookie("one_day_cookie", $time, time()+(3600*24*1));  /* expire in 1 day */

}else{
 $time = $_COOKIE["one_day_cookie"];
}

echo date("H:i", $time);

答案 2 :(得分:0)

怎么样

$unix_start = strtotime("2017-10-10 12:25:16");
$unix_end = strtotime("2017-10-11 11:48:06");
$diff = $unix_end - $unix_start ;
$rndtime =  $unix_start + mt_rand(0,$diff);
echo date("Y-m-d H:i:s",$rndtime);

和另一个版本只有小时和分钟

$unix_start = strtotime("2017-10-10 12:25:16");
$unix_end = strtotime("2017-10-10 12:48:06");
$diff = $unix_end - $unix_start;
$rndtime =  $unix_start + mt_rand(0,$diff);
echo date("H:i",$rndtime);

开始时间始终必须是低端时间。

答案 3 :(得分:0)

或者您需要一种更面向对象的方法,这是三行:

$randDate = new DateTime();
$randDate->setTime(mt_rand(0, 23), mt_rand(0, 59));
echo $randDate->format('Y-m-d H:i');  // or whatever format you need

我建议在random_int()上使用mt_rand(),因为在这种情况下您不一定需要加密随机整数-mt_rand()更快