2012-09-03 34 views
0

可能重复:
Generate incrementing date strings日期和数字 - 创建数组

我:

$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' 
); 

这是什么最好的方法?

+0

您使用哪个版本的PHP,高于或等于5.3? – Rolice

+0

PHP 5.2和PHP 5.3。这是在两台服务器上 –

+0

你会在哪一个脚本上运行该脚本,或者它不是maters? – Rolice

回答

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

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

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]); 
} 
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); 
?> 
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>'; 

} 
?> 
+1

我已更新我的答案。因为这是第一次约会'2012-09-03',它从'2012-09-04'开始。 – Vinay

0

这里PHP 5.3 DateTime和DateInterval的简单例子。这是明确的解决方案。 注意:PHP 5.2支持DateTime,但不支持DateInterval。您可以在PHP 5.2中的自定义类中声明它,请参阅:DateInterval Definition

<?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); 
?>