Возможный дубликат:
Получить первый день недели в PHP?
Здравствуй,
Я хочу найти первую и последнюю дату текущей недели и на прошлой неделе. Аналогичным образом я хочу найти первую и последнюю дату текущего месяца и в прошлом месяце.
Это нужно сделать в PHP. Пожалуйста помоги.
strtotime
достаточно силен с относительными форматами времени :
strtotime('monday this week'); strtotime('sunday this week'); strtotime('monday last week'); strtotime('sunday last week');
(это работает только с PHP 5.3+)
strtotime('first day of this month'); strtotime('last day of this month'); strtotime('first day of last month'); strtotime('last day of last month');
Чтобы получить первую и последнюю дату месяца в PHP <5.3, вы можете использовать комбинацию mktime
и date
( date('t')
дает количество дней месяца):
mktime(0,0,0,null, 1); // gives first day of current month mktime(0,0,0,null, date('t')); // gives last day of current month $lastMonth = strtotime('last month'); mktime(0,0,0,date('n', $lastMonth), 1); // gives first day of last month mktime(0,0,0,date('n', $lastMonth), date('t', $lastMonth); // gives last day of last month
Если вы хотите получить строку для презентации, вам не нужно mktime
:
date('Ym-1'); // first day current month date('Ym-t'); // last day current month date('Ym-1', strtotime('last month')); // first day last month date('Ym-t', strtotime('last month')); // last day last month
Вот функция для первого и последнего дня недели:
function week_start_date($wk_num, $yr, $first = 1, $format = 'F d, Y') { $wk_ts = strtotime('+' . $wk_num . ' weeks', strtotime($yr . '0101')); $mon_ts = strtotime('-' . date('w', $wk_ts) + $first . ' days', $wk_ts); return date($format, $mon_ts); } $sStartDate = week_start_date($week_number, $year); $sEndDate = date('F d, Y', strtotime('+6 days', strtotime($sStartDate)));
Вероятно, его можно адаптировать и к месяцу, но я хотел получить свой ответ! 🙂