我想使用php在24小时内生成一个随机时间。以下是我到目前为止的情况:
srand(mktime(0, 0, 0));
$time = rand( 0, time() );
echo date("H:i", $time);
它似乎最初起作用,但几个小时后,时间略有变化。我先是16:41然后跳到16:47或接近那个。对此的任何帮助将不胜感激。
答案 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()更快