0

Possible Duplicate:
Generate incrementing date strings

I have:

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

I would like receive array with this dates:

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

What is the best way for this?

4

7 回答 7

0

来自@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>';

}
?>
于 2012-09-03T10:33:35.240 回答
0

这是 PHP 5.3 DateTime 和 DateInterval 的简单示例。这是明确的解决方案。注意:PHP 5.2 支持 DateTime,但不支持 DateInterval。您可以在 PHP 5.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);
?>
于 2012-09-03T10:37:55.317 回答
0

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

于 2012-09-03T10:27:14.343 回答
0

你有没有尝试过这样的事情

    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;
    }

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

于 2012-09-03T10:27:28.113 回答
0

尝试这个。

$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]);
}
于 2012-09-03T10:28:08.807 回答
0

这就是您要搜索的内容(也适用于 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);
?>
于 2012-09-03T10:29:09.533 回答
0
$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"));
}
于 2012-09-03T10:29:31.730 回答