Привет, я хотел бы знать.
как получить два месяца с текущего месяца, выделенного с 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);}
}
?>
Используйте функцию date, которая более проста и избавляет вас от петли …
http://de2.php.net/manual/en/function.date.php
Сначала немного теории:
$currentMonth = date("t", time());
Это возвращает погоду 31, 30 или 28/29 в зависимости от месяца, указанного в параметре времени.
time () возвращает метку unix-time, которая не имеет параметров, просто «сейчас», поэтому это текущий месяц.
Если мы хотим, чтобы количество дней со следующего месяца делалось так же, просто добавляя секунды к time (), этого достаточно для достижения следующего месяца … поэтому 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>
';
Например:
$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>";
}