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 ищет более элегантное решение.
Ответы
Ответ 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';