如何显示日期间隔HTML PHP的所有日期

时间:2013-09-25 02:49:29

标签: php html date

当我想从日期间隔日复一日地显示时,我正面临一个问题。

我的意思是我有一个简单的形式:

<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

如果可以将所有这些日期保存在数组或变量中。

希望你能帮助我。谢谢你。

2 个答案:

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

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