PHP использует текущую дату, чтобы получить конкретные дни последующих месяцев - PullRequest
0 голосов
/ 02 февраля 2011

Есть система бронирования для туристической компании.Это дает планировщику несколько вариантов дат начала, все из которых должны быть первой субботой каждого месяца.Таким образом, PHP должен был бы получить текущую дату.

Тогда следующий PHP в поле опции 1 должен использовать текущую дату для отображения первой субботы следующего месяца.Второе поле показывает месяц после этого.и т. д. и т. п.

Любая помощь в том, как это сделать, была бы изумительной.

Спасибо

Ответы [ 2 ]

0 голосов
/ 02 февраля 2011
function next_ten_first_sat(){
    $next_month = strtotime(date('Y-m-d'));
    $j=0;
    for($i=1;$i<10;$i++){
        if($i==1){
            $sat_next_month[$i] = strtotime('next month first saturday', $next_month);
            $next_month = strtotime(date('Y-m',$sat_next_month[$i]).'-01');
        }else{
            $sat_next_month[$i] = strtotime('next month first saturday', $next_month);
            $next_month = strtotime(date('Y-m',$sat_next_month[$i]).'-01');
            $result_year = date('Y', $sat_next_month[$i]);
            if(date('m', $sat_next_month[$i])>10){
                $result_month = date('m', $sat_next_month[$i])-1;
            }else{
                $result_month = date('m', $sat_next_month[$i])-1;
                $result_month = '0'.$result_month;
            }
            $result_date = date('d', $sat_next_month[$i]);
            $result_array[$j] = $result_year.'-'.$result_month.'-'.$result_date;
        }      
       $j++;
    }
    return $result_array;
}

Извините, ребята, впервые неправильно прочитали вопрос.Это должно работать как задумано, но это очень грязно ... Пожалуйста, оптимизируйте это, ребята .....

0 голосов
/ 02 февраля 2011

Этот пример довольно многословен, но он должен показать мощь класса DateTime PHP 5.3 и его отношений.

<?php

$first_of_next_month = new DateTime('next month first day'); // get a start date

$a_day = new DateInterval('P1D');
$a_month = new DateInterval('P1M');

$start_dates = array();

foreach (new DatePeriod($first_of_next_month, $a_month, 11) as $day_of_month) {
    // $day_of_month is now the first day of the next month

    while ($day_of_month->format('w') != 6) {
    // while $day_of_month isn't a Saturday
        $day_of_month->add($a_day);
        // add a day
    }

    $start_dates[] =  $day_of_month;
}

foreach ($start_dates as $d) {
    echo $d->format('r'), "\n"; // or format how you like
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...