在订单时间范围内获取X个随机日期?

时间:2018-02-01 08:53:05

标签: php date

我正在尝试创建一个函数,该函数输出日期按时间顺序排列的X个日期(因此date1< date2< date3等)。我需要一个示例输入数据。

到目前为止,我已经提出了这个函数,但是在uasort之后数组键是不是很重要???

   function getRandomDateTime($startDate, $endDate, $num) {
    $dateTmp = '';
    $dateArr = [];
    $rndDat = '';

    for ($i = 0; $i < $num; $i++) {
        $randomTime = mt_rand(strtotime($startDate), strtotime($endDate));
        $rndDate = date('Y-m-d', $randomTime);
        $dateArr[] .= $rndDate;


    }
    return $dateArr;

}
$test = getRandomDateTime('2015-06-03', '2017-05-12', 10);
print_r($test);

function sortByTime($a, $b){
  $a = strtotime($a);
  $b = strtotime($b);
  return $a - $b;
}
uasort($test, 'sortByTime');

print_r($test);

1 个答案:

答案 0 :(得分:1)

除非我遗漏了某些内容,否则您不能简单地在函数中使用sort来返回已排序的数组吗?

function getRandomDateTime( $start, $end, $num ) {
    $arr=array();
    for( $i = 0; $i < $num; $i++ ) {
        $arr[]=date('Y-m-d', mt_rand( strtotime( $start ), strtotime( $end ) ) );
    }
    sort( $arr, SORT_REGULAR );
    return $arr;
}

$test = getRandomDateTime('2013-06-03', '2018-02-01', 10 );
printf('<pre>%s</pre>', print_r( $test,true ) );

将产生类似于:

的输出
Array
(
    [0] => 2013-07-30
    [1] => 2014-06-25
    [2] => 2014-09-15
    [3] => 2014-11-19
    [4] => 2015-03-24
    [5] => 2015-05-30
    [6] => 2015-08-15
    [7] => 2016-02-12
    [8] => 2017-02-10
    [9] => 2018-01-19
)