簡體   English   中英

PHP星期幾數字到星期幾文本

[英]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));

如果您需要語言環境支持,可以使用Hamishs的一些改進功能答案

使用德語工作日的示例:

setlocale(LC_TIME, 'de_DE');
$dow_numeric = 3;
$dow_text = strftime('%A', strtotime("Sunday +{$dow_numeric} days"));

http://php.net/strftime

如果$dow_numeric00 =星期一)開始,您可以將Sunday更改為Monday或添加$dow_numeric += 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM