2013-09-25 453 views
0

我正面臨一個問題,當我想要顯示日期間隔日期。如何顯示日期間隔內的所有日期HTML PHP

我的意思是,我有一個簡單的表單:

<form method="post" action=""> 
From Date1: <input type="text" name="date1" value="<!--10 days ago date (2013-09-14)-->"/> 
<br> 
To Date2: <input type="text" name="date2" value="<!--today's date (2013-09-24)-->"/> 
<input type="submit" value="Change interval"/> 
</form> 

從這個形式我得到兩個日期,我想展示那些之間的所有日子裏,像這樣的:

| 2013-09-14 

| 2013-09-15 

| 2013-09-16 

| 2013-09-17 

| . 

| . 

| 2013-09-24 

如果有可能將所有這些日期保存在數組或變量中。

希望你能幫助我。謝謝。

+0

可以發佈你想試試的內容 –

回答

3
$start = new DateTime('2013-09-01'); 
$end  = new DateTime('2013-09-30'); 
$interval = new DateInterval('P1D'); 
$period = new DatePeriod($start, $interval, $end); 

foreach ($period as $dt) 
{ 
    echo $dt->format("Y-m-d") . PHP_EOL; 
} 

See it in action

專門爲您使用案例:

$dates = array(); 
$start = new DateTime($_POST['date1']); 
$end  = new DateTime($_POST['date2']); 
$interval = new DateInterval('P1D'); 
$period = new DatePeriod($start, $interval, $end); 

foreach ($period as $dt) 
{ 
    $dates[] = $dt->format("Y-m-d"); 
} 
+0

Thi我的答案比我提供的要好得多。謝謝! +1 –

1

試試這個,覺得我是從php.net年前,對不起,沒有更好的參考鏈接...

function dates_array($start, $end) { 
    $range = array(); 

    if (is_string($start) === true) $start = strtotime($start); 
    if (is_string($end) === true) $end = strtotime($end); 

    do { 
     $range[] = date('Y-m-d', $start); 
     $start = strtotime("+ 1 day", $start); 
    } 
    while($start <= $end); 

    return $range; 
} 
相關問題