2014-10-24 3 views
2

Привет, я хотел бы знать.PHP Выберите вариант возврата 2 месяца назад с текущего месяца

как я получаю два месяца с текущего месяца Выделено с 1-15 и с 16 до 31

мне нужно вывести что-то вроде этого:

<option value="2014-09-15">September 15, 2014</option> 
<option value="2014-09-30">September 30, 2014</option> 
<option value="2014-10-15">October 15, 2014</option> 
<option value="2014-10-30">October 30, 2014</option> 

У меня есть пример кода, но его выходные 12 месяцев

<?php 

for ($i = 0; $i <= 11; ++$i) 
{ 
$time = strtotime(sprintf('+%d months', $i)); 
$value = date('m', $time); 
$label = date('F', $time); 

//if month is set stay on that month 

if($month==$value) 
{ printf('<option value="%s" selected="selected">%s</option>' , $value, $label); 
} 
else 
{printf('<option value="%s">%s</option>', $value, $label);} 
} 

?> 

ответ

1

Использовать дату функция, которая является более легкой и запасные части вам петлю ...

http://de2.php.net/manual/en/function.date.php

Некоторые теории первого:

$currentMonth = date("t", time()); 

Это возвращает 31 кастрированный баран, 30 или 28/29 в зависимости по месяцу, указанному во временном параметре. time() возвращает unix-timestamp, который без какого-либо параметра просто «теперь», поэтому его текущий месяц.

Если мы хотим, чтобы количество дней со следующего месяца повторялось так же, просто добавляя секунды к времени(), этого достаточно, чтобы достичь следующего месяца ... так что 32 дня в любом случае приведут вас к точной в следующем месяце ...

Sidenote: 1 час имеет 3600 секунд * 24 = 1 день имеет 86400.

$nextMonth = date("t", time() + (86400 * 32)); //+32 days will guarantee next month 

Теперь я представляю вам полное решение, в значительной степени означает, что весь ваш вывод может быть генерируется следующим образом:

$timeNow = time(); 
$timeNextMonth = $timeNow + (86400 * 32); //+ 32 days 

echo ' 
    <select name="date"> 
     <option value="' . date("Y-m-15", $timeNow) . '">' . date("F 15, Y", $timeNow) . '</option> 
     <option value="' . date("Y-m-t", $timeNow) . '">' . date("F t, Y", $timeNow) . '</option> 
     <option value="' . date("Y-m-15", $timeNextMonth) . '">' . date("F 15, Y", $timeNextMonth) . '</option> 
     <option value="' . date("Y-m-t", $timeNextMonth) . '">' . date("F t, Y", $timeNextMonth) . '</option> 
    </select> 
'; 
+0

отлично это хорошо – freddy

1

Например:

$currentMonth = date("n"); 
for($i=1;$i<3;$i++) { 
    $monthNum = $currentMonth - $i; 
    if($monthNum<1) 
     $monthNum = 12 - $monthNum; 
    $monthName = date("F", mktime(0, 0, 0, $monthNum, 10)); 
    //here use $monthNum and $monthName for output 
    print "<option>......</option>"; 
} 
+0

это также хорошо .. опция который когда-либо будет – freddy

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