Мне нужно определение текущей недели по ISO 8601. Я хочу, чтобы понедельник всегда определялся как понедельник, который начался на текущей неделе.
У меня отлично работает следующее решение:
$monday = strtotime(date('o-\WW'));
$friday = strtotime("next friday",$monday);
Для $monday
этот метод всегда возвращает понедельник, который начался на этой календарной неделе. к сожалению, этот метод использует PHP 5.1 для анализа формата даты o
.
Чтобы получить любой день недели, вы можете попробовать:
function time_for_week_day($day_name, $ref_time=null){
$monday = strtotime(date('o-\WW',$ref_time));
if(substr(strtoupper($day_name),0,3) === "MON")
return $monday;
else
return strtotime("next $day_name",$monday);
}
Использование:
time_for_week_day('wednesday');
time_for_week_day('friday',strtotime('2014-12-25'));