Есть ли способ найти день недели в php с определенной датой.
Я не имею в виду
date('D', $timestamp);
Я имею в виду, если бы я должен был предоставить дату, например, 2010-10-21, она вернется «в третий четверг».
Не напрямую, для этого вам нужна вспомогательная функция:
function literalDate($timestamp) { $timestamp = is_numeric($timestamp) ? $timestamp : strtotime($timestamp); $weekday = date('l', $timestamp); $month = date('M', $timestamp); $ord = 0; while(date('M', ($timestamp = strtotime('-1 week', $timestamp))) == $month) { $ord++; } $lit = array('first', 'second', 'third', 'fourth', 'fifth'); return strtolower($lit[$ord].' '.$weekday); } echo literalDate('2010-10-21'); // outputs "third thursday"
Рабочий пример:
strtotime()
понимает синтаксис. Вам просто нужно предоставить его в первый день месяца, о котором идет речь, в качестве отправной точки.
echo date("dmY", strtotime("third thursday", mktime(0,0,0,10,1,2010))); // Will output October 21 echo date("dmY", strtotime("third thursday", mktime(0,0,0,11,1,2010))); // Will output November 18