[英]PHP day of week numeric to day of week text
這可能非常簡單,但我找不到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
語句可以完成這項工作,但我正在尋找更優雅的解決方案。
有點黑客,但是:
$dow_text = date('D', strtotime("Sunday +{$dow_numeric} days"));
它不受歡迎,但在PHP中實際上有一個函數jddayofweek
。 您可以使用第二個參數作為1來調用它以獲得完整的格里高利工作日名稱,或者使用2作為縮寫名稱。
e.g. jddayofweek(2, 2); #returns Wed
請注意,對於此功能,數字從星期一開始。 星期一= 0,星期二= 1,......
創建一個數組以將數字DOW映射到文本DOW。
$dowMap = array('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');
如果您需要語言環境支持,請加載一些隨機日期的dow(例如,epoch(0)將是一個好日期),然后在接下來的6天內動態構建dow map。
要從星期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';
function getDay(){
$dowMap = array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
$dow_numeric = date('w');
return $dowMap[$dow_numeric];
}
這應該工作:
$dow_numeric = 3;
$last_sunday = strtotime('last Sunday');
$dow_text = date('D', strtotime('+'.$dow_numeric.' day', $last_sunday));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.