日期和数字-创建数组


Date and number - create array

可能重复:
生成递增日期字符串

我有:

$start_date = '2012-09-03';
$number_days = 5;

我想收到这个日期的数组:

$dates = array(
            '2012-09-03',
            '2012-09-04',
            '2012-09-05',
            '2012-09-06',
            '2012-09-07'
 );

最好的方法是什么?

$start_date = '2012-09-03';
$dates[] = $start_date;
$number_days = 5;
for ($i=1; $i < $number_days; $i++) {
    $dates[] = date('Y-m-d', strtotime("$start_date +$i days"));
}

http://php.net/manual/en/function.date-add.php循环并添加您需要的日期。

你试过这样的吗

    function get_days($start_date, $max){
        $ts=strtotime($start_date);
        $next_day_interval=24*60*60;
        $arr=array();
            $arr[]=$start_date;
        for($i=1;$i<=$max;$i++){
            $ts += $next_day_interval;
            $arr[]=date('Y-m-d', $ts);
        }
        return $arr;
    }

只是在这里写的,所以可能会有一些编译时错误,但我希望你能明白。

以下是您正在搜索的内容(也适用于PHP<5.3)

<?php 
    $start_date = '2012-09-03';
    $number_days = 5;
    $stdate = date(strtotime($start_date));
    $dates = array();
    for($i = 0 ; $i < $number_days ; $i++) {
      $dates[$i] = date('Y-m-d', $stdate) ;
      $stdate += 24*60*60;
    }
    var_dump($dates);
?>

试试这个。

$start_date = '2012-09-03';
$number_days = 5;
$dates = array();
$TS = strtotime($start_date);
$dates[0] = $start_date;
for($i=1;$i<5;$i++)
{
    $dates[$i] = date('Y-m-d', strtotime('+1 day', $TS));
    $TS = strtotime($dates[$i]);
}

从@vinay修改代码以打印实际输出

<?php 
$start_date = '2012-09-03';
$number_days = 5;
$dates = array();
$TS = strtotime($start_date);
for($i=0;$i<5;$i++)
{
    $dates[$i] = date('Y-m-d', strtotime('+1 day', $TS));
    $TS = strtotime($dates[$i]);
   echo date('y-m-d',$TS).'<br>';
}
?>

以下是PHP 5.3 DateTime和DateInterval的一个简单示例。这是一个明确的解决方案注意:PHP 5.2支持DateTime,但不支持DateInterval。您可以在PHP5.2中的自定义类中声明它,请参阅此处:DateInterval定义

<?php
   $start_date = '2012-09-03';
   $number_days = 5;
   $dt = new DateTime($start_date);
   $dates = array();
   for($i = 0; $i < $number_days; $i++) {
       $dates[] = $dt->format("Y-m-d");
       $dt->add(new DateInterval("P1D"));
   }

   print_r($dates);
?>