-1

2 つの曜日の間の日付を計算するアルゴリズムが必要です。たとえば、私は持っています

開始日: 23-04-2012 および終了日: 27-04-2012

今、私はこの構造を持つ配列を受け取りたいです:

$arr = array(
  '23-04-2012',
  '24-04-2012',
  '25-04-2012',
  '26-04-2012', 
  '27-04-2012', 
  '28-04-2012'
);

ありがとう!

4

3 に答える 3

1

DateTime::Diff 関数を使用できます (ドキュメントはこちら)。

  1. 2 つの日付を関数に渡します。
  2. 戻り値を日数として取得します。
  3. それに 1 つ追加します (開始日と終了日の両方を含めるため)。
  4. for(int i = 0; i <= $days_difference; i++)ループを組む。
  5. 毎回日付を 1 日ずつ増やして、配列に追加します。
于 2012-04-27T08:19:07.423 に答える
0
$start = '23-04-2012';
$end   = '27-04-2012';

$startTs = strtotime("$start 00:00:00");
$endTs   = strtotime("$end 00:00:00");

$days = array();
$day  = $startTs;

$i = 0;

while ($day <= $endTs) {
    $days[] = date('d-m-Y', $day);
    $i++;
    $day = mktime(0, 0, 0, date('n', $startTs), date('j', $startTs) + $i, date('Y', $startTs));
}

var_dump($days);
于 2012-04-27T08:46:30.023 に答える
-1

これはあなたを助けることができます。

$startdate=explode("-","23-04-2012");
$enddate=explode("-","27-04-2012");
$i;
$arr=array();
for($i=$startdate[0];$i<=$endate[0];$i++)
{
     $dd=$i.'-'.$startdate[1].'-'.$startdate[2];
     array_push($arr,$dd);
}
print_r($arr);
于 2012-04-27T08:18:42.610 に答える