我的mysql数据库中有7条记录每个对应于0-6 的一周中的某一天
现在我的PHP脚本,我想显示0而不是"Sunday",或者1想显示"Monday"。
有没有可用的函数可以用一周中的数字天数并返回星期天的名称?
您可以使用日期函数,格式为l
:
l(小写'l')
一周中某一天的完整文本表示
http://php.net/manual/en/function.date.php
并使用周日是0:的事实
echo date('l', strtotime("Sunday +{$day_number} days"));
或者作为一个函数:
function getDayNameFromDayNumber($day_number) {
return date('l', strtotime("Sunday +{$day_number} days"));
}
构建一个包含日期的数组。然后可以通过索引调用日期。
0-6=周日-周六
$daynum = 0; // assuming that's what was returned from the database.
$dow = array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
echo $dow[$daynum]; // would echo Sunday
这需要一个枚举。PHP通常不支持枚举,但有一个用于枚举的SPL库,使用它是不安全的,因为服务器可能没有安装它。
另一种方法是在一周中的几天使用数字数组:
$daysOfWeek = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday",];
现在调用$daysOfWeek[$x%7];
返回当天的字符串(%7是为了避免超出范围的索引)。
最简单的方法是使用数组。你应该使用0-6的数字——这是个好主意。
$number_of_day = 6; //OR DIFFERNT - it depends what you need
$day_array = array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
$day_array[$number_of_day];
在变量$day_array中[$number_of_day];你有小时输出。
从一周中的数字天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';
您可以编写一个助手并将日期传递给它。它将在您需要的任何地方的所有视图中提供:echo $this->MyHelper->changeNumToDate($num)
既然你在使用退货,你真的不需要休息,但这是我的习惯。
class MyHelper extends Helper {
function changeNumToDate($num = null){
Switch($num){
Case 0:
return 'Sunday';
break;
Case 1:
return 'Monday';
break;
Case 2:
return 'Tuesday';
break;
Case 3:
return 'Wednesday';
break;
Case 4:
return 'Thursday';
break;
Case 5:
return 'Friday';
break;
default:
return 'Saturday';
}
}
}