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



我正在尝试创建一个函数,该函数输出 X 个日期,其中日期按时间顺序排列(因此 date1

到目前为止,我已经想出了这个函数,但是数组键在 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);

除非我错过了什么,否则您不能简单地在函数中使用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
)

最新更新