PHP 竞赛,尝试在两个给定的日期周期之间选择获胜者日期/时间


PHP contest, attempting to pick winner date/time between two given date periods

为了构建一个基于flash的竞赛游戏,与PHP/MySQL相关联以进行幕后跟踪,我的目标是最终确定一个设定的日期范围(即,在YYYY-MM-DD和YYYY-MM-DD之间),并在给定范围内选择一个随机日期时间(或两个,或三个),并将其指定为获胜时间。我真的不确定最好的方法,有什么想法吗?

我对时间 + rand() 相当陌生,不确定解决这个问题的最佳方法。任何似乎对此应用程序有意义的建议或有用的片段都将是大:D

$start = '2011-05-12';
$end   = '2011-05-30';
$start = strtotime($start);
$end   = strtotime($end);
$winningTimes = array();
for ($i = 1; $i <= 3; $i++) {
    $winningTimes[] = mt_rand($start, $end);
}

这为您提供了给定范围内的三个时间戳。时间戳只是自 1970 年以来的秒,因此它们是简单的序列号。只需使用 mt_rand 在开始-结束范围内选择一个随机数即可。将时间戳转换回人类可读的日期,例如:
date('Y-m-d', $winningTimes[0]) .


为了确保您获得独特的日期,请执行如下操作:

$start = strtotime('2011-05-12');
$end   = strtotime('2011-05-30');
$days  = array();
// populate array with all possible days
for ($i = $start; $i <= $end; $i = strtotime('+1 day', $i)) {
    $days[] = date('Y-m-d', $i);
}
shuffle($days); // randomize
$days = array_slice($days, 0, 3); // take first 3