2013-09-25 233 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; 
} 
相关问题