我正在编写一个应用程序,我需要在两个固定的时间戳之间分配随机日期
我如何使用php来实现这一点?我首先搜索了一下,但只找到了Java的答案,而不是php
例如:
$string = randomdate(1262055681,1262055681);发布于 2009-12-29 11:05:13
PHP有rand()函数:
$int= rand(1262055681,1262055681);它还有mt_rand(),它通常被认为在结果中具有更好的随机性:
$int= mt_rand(1262055681,1262055681);要将时间戳转换为字符串,可以使用date(),即:
$string = date("Y-m-d H:i:s",$int);发布于 2012-04-11 18:10:50
如果给定的日期是日期时间格式,那么使用这个最简单的方法是将两个数字都转换为时间戳,然后将它们设置为随机数生成器上的最小和最大界限。
一个简单的PHP示例如下:
// Find a randomDate between $start_date and $end_date
function randomDate($start_date, $end_date)
{
// Convert to timetamps
$min = strtotime($start_date);
$max = strtotime($end_date);
// Generate random number using above bounds
$val = rand($min, $max);
// Convert back to desired date format
return date('Y-m-d H:i:s', $val);
}此函数使用strtotime()将日期时间描述转换为Unix时间戳,并使用date()将已生成的随机时间戳转换为有效日期。
发布于 2014-06-26 21:14:16
另一种使用PHP DateTime的解决方案
$start和$end是DateTime对象,我们将其转换为时间戳。然后,我们使用mt_rand方法来获取它们之间的随机时间戳。最后,我们重新创建一个DateTime对象。
function randomDateInRange(DateTime $start, DateTime $end) {
$randomTimestamp = mt_rand($start->getTimestamp(), $end->getTimestamp());
$randomDate = new DateTime();
$randomDate->setTimestamp($randomTimestamp);
return $randomDate;
}https://stackoverflow.com/questions/1972712
复制相似问题