Подтвердить что ты не робот

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 может выполнить эту работу, но Im ищет более элегантное решение.

4b9b3361

Ответ 1

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

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

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

Ответ 2

Бит взлома, но:

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

Ответ 3

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

e.g. jddayofweek(2, 2); #returns Wed

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

Ответ 4

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

$dow_numeric = 3;

$last_sunday = strtotime('last Sunday');
$dow_text = date('D', strtotime('+'.$dow_numeric.' day', $last_sunday));

Ответ 5

function getDay(){
    $dowMap = array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
    $dow_numeric = date('w');
    return $dowMap[$dow_numeric];
}

Ответ 6

Чтобы получить с воскресенья по субботу от числового дня недели от 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') начинается с 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';