2011-01-20 46 views
37

的一天,這可能是真的很容易,但我無法找到一個PHP函數來做到這一點...週數字的PHP天到一週的文本

OK所以

$dow_numeric = date('w'); 

給人的數字天週日至週六0-6周。

而且

$dow_text = date('D'); 

給出了一週的文本日3字母縮寫(週日,週一等)

是否有一個功能或使用$dow_numeric獲得$dow_text簡單的方法?如果我的'0'爲$dow_numeric,我該如何製作$dow_text = 'Sun'?是的switch聲明可以完成這項工作,但我正在尋找更優雅的解決方案。

回答

25

創建一個數組以將數字DOW映射到文本DOW。

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

如果你需要語言環境支持,加載一些隨機日期的陶氏(時代(0)將是例如一個良好的日期),然後在接下來的6天,動態地構建道瓊斯指數圖。

+0

超級簡單和同意,所以,我把它沒有一個功能已經雖然。 – csi 2011-01-20 00:39:49

+1

聰明的黑客,重新發明輪子:) – peter 2017-04-06 17:35:51

101

黑客攻擊的一位,但:

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

這不是哈克,它是光滑的! ;-) – acme 2012-04-03 14:44:57

+1

完美,聰明。 – Bendoh 2015-01-16 03:25:32

1

這應該工作:

$dow_numeric = 3; 

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

這不是受歡迎,但實際上有一個功能jddayofweek這在PHP。您可以使用第二個參數將其作爲1來調用,以獲取完整的公曆週日名稱或2以獲取縮寫名稱。

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

請注意,對於此功能,數字從星期一開始。因此,星期一= 0,週二= 1,...

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

從一週的數字一天得到星期日至星期六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';