0
$date1 = "2007-03-24";
$date2 = "2009-06-26";

$diff = abs(strtotime($date2) - strtotime($date1));

$years = floor($diff / (365*60*60*24));
$months = floor(($diff - $years * 365*60*60*24) / (30*60*60*24));
$days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));

$arary_dates = array ();

for ($days=1;$i<=$days;$days++)
{
$array_dates[$days] -> new DateTime(2007,0,$days);
}

私はこのコードが間違っていることを知っていますが、私が望むものをあなたに示すことができる方法です.

最初の日付があり、オブジェクト配列の日付に、最初の日付から最後の日付までのすべての日付を入力したい (インクリメントに渡された日数を使用)

どうすればできますか?

4

3 に答える 3

3

明らかに、開始時刻と終了時刻を変更する必要がありますが、これで開始できます。

$start = new DateTime('first day of this month');
$end = new DateTime('first day of next month');
$interval = DateInterval::createFromDateString('1 day');
$period = new DatePeriod($start, $interval, $end);

foreach ($period as $dt)
{
    echo $dt->format("l Y-m-d") . PHP_EOL;
}
于 2013-04-04T17:45:04.507 に答える
1

日付をタイムスタンプとして保存し、それを計算に使用します...つまり

$start = strtotime($date1);
$end = strtotime($date2);

$dayArray = array();
while($start != $end) {
   $start += 60*60*24;  //seconds in a day, you could alter this to multiple by number of days passed in
   $dayArray[] = $start;
}

次に、date() メソッドを使用して、選択した形式でタイムスタンプを表示します。

于 2013-04-04T17:43:02.477 に答える
0

私はこれまでにこのようなことをしたことがないので、私のコードが機能するかどうかはわかりません. しかし、論理に従うようにしてください。

$start = strtotime("2007-03-24"); //日付1
$end = strtotime("2009-06-26"); //日付2

$array_date = 配列();
while ($start != $end) {
    $array_dates[] = date('Ymj',$start);
    $ワンデイ = 60 * 60 * 24;
    $start += $oneDay;
}


于 2013-04-04T17:45:49.553 に答える