This may be really easy but I can\'t find a PHP function to do this...
OK so
$dow_numeric = date(\'w\');
gives the numeric day of t
This should work:
$dow_numeric = 3;
$last_sunday = strtotime('last Sunday');
$dow_text = date('D', strtotime('+'.$dow_numeric.' day', $last_sunday));
It's not popular, but there's actually a function jddayofweek for this in PHP. You can call it with the second parameter as 1 to get full gregorian week day name or 2 for the abbreviated name.
e.g. jddayofweek(2, 2); #returns Wed
Note that for this function, numbers start at Monday. So Monday=0, Tuesday=1, ...
If you need locale support you can use a bit improved function of Hamishs answer:
Example using german weekdays:
setlocale(LC_TIME, 'de_DE');
$dow_numeric = 3;
$dow_text = strftime('%A', strtotime("Sunday +{$dow_numeric} days"));
http://php.net/strftime
If $dow_numeric
start on 0
(0
= Monday) you can just change Sunday
to Monday
or
add $dow_numeric += 1
Bit of a hack, but:
$dow_text = date('D', strtotime("Sunday +{$dow_numeric} days"));
function getDay(){
$dowMap = array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
$dow_numeric = date('w');
return $dowMap[$dow_numeric];
}
To get Sunday to Saturday from numeric day of the week 0 to 6:
//For example, our target numeric day is 0 (Sunday):
$numericDay = 0; //assuming current date('w')==0 and date('D')=='Sun';
Solution-1: Using PHP's built-in function jddayofweek() which starts from Monday
whereas date('w')
starts from Sunday
:
jddayofweek($numericDay-1, 1); //returns 'Sun', here decreasing by '-1' is important(!)
//jddayofweek(0, 1); //returns 'Mon';
//jddayofweek(0, 2); //returns 'Monday';
Solution-2: Using a trick(!):
date('D', strtotime("Sunday +{$numericDay} days")); //returns 'Sun';
//date('l', strtotime("Sunday +{$numericDay} days")); //returns 'Sunday';