首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用php生成两个日期之间的随机日期?

如何使用php生成两个日期之间的随机日期?
EN

Stack Overflow用户
提问于 2009-12-29 11:02:46
回答 15查看 87.4K关注 0票数 64

我正在编写一个应用程序,我需要在两个固定的时间戳之间分配随机日期

我如何使用php来实现这一点?我首先搜索了一下,但只找到了Java的答案,而不是php

例如:

代码语言:javascript
运行
复制
$string = randomdate(1262055681,1262055681);
EN

回答 15

Stack Overflow用户

回答已采纳

发布于 2009-12-29 11:05:13

PHP有rand()函数:

代码语言:javascript
运行
复制
$int= rand(1262055681,1262055681);

它还有mt_rand(),它通常被认为在结果中具有更好的随机性:

代码语言:javascript
运行
复制
$int= mt_rand(1262055681,1262055681);

要将时间戳转换为字符串,可以使用date(),即:

代码语言:javascript
运行
复制
$string = date("Y-m-d H:i:s",$int);
票数 105
EN

Stack Overflow用户

发布于 2012-04-11 18:10:50

如果给定的日期是日期时间格式,那么使用这个最简单的方法是将两个数字都转换为时间戳,然后将它们设置为随机数生成器上的最小和最大界限。

一个简单的PHP示例如下:

代码语言:javascript
运行
复制
// 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()将已生成的随机时间戳转换为有效日期。

票数 46
EN

Stack Overflow用户

发布于 2014-06-26 21:14:16

另一种使用PHP DateTime的解决方案

$start$endDateTime对象,我们将其转换为时间戳。然后,我们使用mt_rand方法来获取它们之间的随机时间戳。最后,我们重新创建一个DateTime对象。

代码语言:javascript
运行
复制
function randomDateInRange(DateTime $start, DateTime $end) {
    $randomTimestamp = mt_rand($start->getTimestamp(), $end->getTimestamp());
    $randomDate = new DateTime();
    $randomDate->setTimestamp($randomTimestamp);
    return $randomDate;
}
票数 33
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1972712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档