2012-05-09 3 views
0

Мне интересно, есть ли простой способ (например, использование strtotime), благодаря чему я могу получить время unix для последнего вхождения комбинации день/месяц. Например, если бы я должен был спросить «1 сентября» сегодня (9 мая 2012 года), я бы получил 1314835200 (1 сентября 2011 года), но если бы код снова должен был запускаться в октябре этого года, я получил бы 1346457600 (1 сентября 2012 года) , и то же самое, если я проведу его через год.Получение последнего события дня/месяца в PHP

Способность сделать это как вперед, так и назад будет огромным бонусом.

+1

Я бы рекомендовал провести поиск, http://stackoverflow.com/search?q=%5Bphp%5D+last+day+of+the+month. Существует немало примеров. ** Верхний совет ** В поиске, если вы поместили выбранные теги в [php], вы можете ограничить поиск только этим тегом :) –

+0

@DavidYell Возможно, вы захотите перечитать вопрос – jprofitt

+0

возможный дубликат http: // stackoverflow.com/search?q=get+next+occurence+of+a+date+php&submit=search – Gordon

ответ

5
$month = 9; 
$day = 1; 

$timestamp = mktime(0, 0, 0, $month, $day); 
if ($timestamp > time()) { 
    $timestamp = mktime(0, 0, 0, $month, $day, date('Y') - 1); 
} 
+0

Это, безусловно, делает эту работу. Он также может смотреть вперёд (т. Е. Вернуться на следующий 1 сентября), изменив значение> на <и - на +. Если кто-то не поражает меня 1-лайнером (я подозреваю, что его нет, за исключением тройных операторов). Я пойду с этим ответом. – marxjohnson

+0

Почему вы отвечаете на дубликаты? – Gordon

+1

@ Gordon Потому что это было легче, чем найти подходящего обмана. Не говорите мне, что кто-то меня ниспровергал? – deceze

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