0

日付の間隔から日ごとに表示したいときに問題に直面しています。

つまり、私は単純なフォームを持っているということです:

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

このフォームから 2 つの日付を取得し、次のようにそれらの間のすべての日を表示したいと思います。

| 2013-09-14

| 2013-09-15

| 2013-09-16

| 2013-09-17

| .

| .

| 2013-09-24

可能であれば、このすべての日付を配列または変数に保存してください。

あなたが私を助けてくれることを願っています。ありがとうございます。

4

2 に答える 2

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

実際に見る

特にあなたのユースケースのために:

$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");
}
于 2013-09-25T02:54:58.430 に答える
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;
}
于 2013-09-25T02:51:36.817 に答える