Поиск первого дня недели через php

Возможный дубликат:
Получить первый день недели в PHP?

Привет,

Я хочу найти первую и последнюю дату текущей недели и прошлой недели. Аналогичным образом я хочу найти первую и последнюю дату текущего месяца и в прошлом месяце.

Это должно быть сделано в PHP. Пожалуйста, помогите.

Ответ 1

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('Y-m-1'); // first day current month
date('Y-m-t'); // last day current month
date('Y-m-1', strtotime('last month')); // first day last month
date('Y-m-t', strtotime('last month')); // last day last month

Ответ 2

Здесь функция для первого и последнего дня недели:

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))); 

Возможно, он тоже будет приспособлен к месяцу, но я хотел получить свой ответ!:)