2012-05-02 2 views
1

Мне нужна помощь Выберите каждую среду, начиная с 5/2/12. Этот код ниже выбирает каждую среду, начиная с текущей недели. Но мне нужно установить начальную неделю. Я знаком с PHP, но не знаком с датами php. Поэтому, пожалуйста, будьте как можно более конкретными. Я нашел это:PHP Выбрать друг друга Среда

$number_of_dates = 10; 

for ($i = 0; $i < $number_of_dates; $i++) { 
    echo date('m-d-Y', strtotime('Wednesday +' . ($i * 2) . ' weeks')). "<br>".PHP_EOL; 
} 

ответ

3

Использование mktime создать дату начала и передать в качестве второго аргумента strtotime так, что отсчет начинается оттуда:

$startDate = mktime(0, 0, 0, 5, 2, 2012); // May 2, 2012 
for ($i = 0; $i < $number_of_dates; $i++) { 
    $date = strtotime('Wednesday +' . ($i * 2) . ' weeks', $startDate); 
    echo date('m-d-Y', $date). "<br>".PHP_EOL; 
} 

See it in action.

1

Дайте ему дату в строке, вместо «Среда» (который выбирает следующую среду), написать:

strtotime('20120502 +' . ($i * 2) . ' weeks'))

Чтобы выбрать эту дату. (Формат - yyyymmdd).

0

Если у вас есть PHP 5.2.0 или новее, вы можете сделать это легко так:

$date = new DateTime('2006-05-02'); 
for ($i=0; $i<10; $i++) { 
    echo $date->format('m-d-Y').'<br/>'.PHP_EOL; 
    $date->modify('+1 week'); 
} 
0

Вы также можете использовать DatePeriod и DateInterval классы, чтобы сделать жизнь проще.

Стандартная оговорка: оба класса выше требуют PHP> = 5.3.0.

$number_of_dates = 10; 

$start_date = new DateTime("5/2/12"); 
$interval = DateInterval::createFromDateString("second wednesday"); 
$period  = new DatePeriod($start_date, $interval, $number_of_dates - 1); 

foreach ($period as $date) { 
    echo $date->format("m-d-Y") . "<br>" . PHP_EOL; 
} 
Смежные вопросы