PHP день недели числовой текст дня недели

Это может быть очень просто, но я не могу найти функцию PHP для этого …

Итак

$dow_numeric = date('w'); 

дает числовой день недели 0-6 для воскресенья по субботу.

А также

 $dow_text = date('D'); 

дает аббревиатуру 3-х символов для текстового дня недели (Sun, Mon и т. д.)

Есть ли функция или простой способ использовать $dow_numeric для получения $dow_text ? Если у меня есть «0» как $dow_numeric , как я могу сделать $dow_text = 'Sun' ? Да, оператор switch может выполнить эту работу, но я ищу более элегантное решение.

Solutions Collecting From Web of "PHP день недели числовой текст дня недели"

Создайте массив для сопоставления числовых DOWs с текстом DOW.

 $dowMap = array('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'); 

Если вам нужна поддержка локали, загрузите dow какой-то случайной даты (например, эпоха (0) будет хорошей датой), а затем в течение следующих 6 дней и динамически создайте карту dow.

Немного взлома, но:

 $dow_text = date('D', strtotime("Sunday +{$dow_numeric} days")); 

Это не популярно, но на самом деле в PHP есть функция jddayofweek . Вы можете вызвать его со вторым параметром как 1, чтобы получить полное имя дня gregorian week day или 2 для сокращенного имени.

 eg jddayofweek(2, 2); #returns Wed 

Обратите внимание, что для этой функции номера начинаются в понедельник. Итак, понедельник = 0, вторник = 1, …

Это должно работать:

 $dow_numeric = 3; $last_sunday = strtotime('last Sunday'); $dow_text = date('D', strtotime('+'.$dow_numeric.' day', $last_sunday)); 
 function getDay(){ $dowMap = array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'); $dow_numeric = date('w'); return $dowMap[$dow_numeric]; } 

Чтобы получить воскресенье до субботы с числового дня недели 0 до 6 :

 //For example, our target numeric day is 0 (Sunday): $numericDay = 0; //assuming current date('w')==0 and date('D')=='Sun'; 

Решение-1: Использование встроенной функции PHP jddayofweek (), которая начинается с Monday то date('w') как date('w') начинается с Sunday :

 jddayofweek($numericDay-1, 1); //returns 'Sun', here decreasing by '-1' is important(!) //jddayofweek(0, 1); //returns 'Mon'; //jddayofweek(0, 2); //returns 'Monday'; 

Решение-2: Использование трюка (!):

 date('D', strtotime("Sunday +{$numericDay} days")); //returns 'Sun'; //date('l', strtotime("Sunday +{$numericDay} days")); //returns 'Sunday';