2011-02-02 2 views
0

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

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

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

Благодаря

+1

'дата ('Ym-d', strtotime ('первая суббота февраля 2011 года));' – Mchl

+0

, которая появилась ничего не делайте на echo –

+0

Странно, потому что он перекликается с «2011-02-05» здесь. В любом случае, исследуйте 'strtotime()' и форматирует его. – Mchl

ответ

0

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

<?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 
} 
+0

Выключено в случае сбоя. Не должно быть на 5.3 –

+0

Не было бы способа сделать что-то вроде этого кода ниже. Очевидно, что это не работает, но все решения здесь появляются по ошибке

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

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

Смежные вопросы