2016-08-02 49 views
0

我是新來的PHP,不知道我的要求是可能的:獲取星期幾及其週數在PHP

我需要獲得與當前的天陣並且還指示每一天是否是該月的該日期的第一,第二,第三,第四或第五次發生。

例子

2016年八月的第一個星期,這將是:

monday1 
tuesday1 
wednesday1 
thursday1 
friday1 
saturday1 
sunday1 

但上週2016年8月(始於八月結束於9月)它會是:

monday5 
tuesday5 
wednesday1 
thursday1 
friday1 
saturday1 
sunday1 

我試過了,但它只適用於當天。

$week_of_the_month = ceil(date('d', $time)/7); 
$jd = cal_to_jd(CAL_GREGORIAN,date("m"),date("d"),date("Y")); 
echo jddayofweek($jd,1).$week_of_the_month; 
+0

喜,向我們展示你的代碼做的事情是很重要的,那麼我們可以計算出一個給你的解決方案 –

+0

你到目前爲止做了什麼?我們不是在這裏從頭開始編寫代碼。向我們展示您的試用代碼。 –

+0

是的,但可能是@MueyiwaMosesIkomi表示,最好讓我們展示你的工作。 – tyb

回答

3
$d = new DateTime(); 
$days = []; 

for ($i = 0; $i < 7; $i++) { 
    $date = $d->format('j'); 
    $days[$date] = $d->format('l - ') . ceil($date/7); 
    $d->add(new DateInterval('P1D')); 
} 

,會爲當前日期的工作,但你可以測試它在十字架上了兩個多月通過設置一個特定的日期與工作周:

$d = new DateTime('2016-08-31'); 

結果是如下:

print_r($days); 

Array 
(
    [31] => Wednesday - 5 
    [1] => Thursday - 1 
    [2] => Friday - 1 
    [3] => Saturday - 1 
    [4] => Sunday - 1 
    [5] => Monday - 1 
    [6] => Tuesday - 1 
) 

如果你想在日期總是在當前周的星期一開始,該DateTime構造函數允許你在一個字符串,例如通過:

$d = new DateTime('monday this week'); 

今天是週四,但它給:

Array 
(
    [1] => Monday - 1 
    [2] => Tuesday - 1 
    [3] => Wednesday - 1 
    [4] => Thursday - 1 
    [5] => Friday - 1 
    [6] => Saturday - 1 
    [7] => Sunday - 1 
) 

更改語言

如果你想改變的語言日期輸出,這是一個單獨的主題(see here)。您需要在系統上安裝本地/擴展。如果你不希望走這條路線,你可以只映射天進你的語言自己:

$intlDays = [ 
    'Monday' => 'Lundi', 
    'Tuesday' => 'Mardi', 
    'Wednesday' => 'Mercredi', 
    'Thursday' => 'Jeudi', 
    'Friday' => 'Vendredi', 
    'Saturday' => 'Samedi', 
    'Sunday' => 'Dimanche' 
]; 

$d = new DateTime('monday this week'); 
$days = []; 

for ($i = 0; $i < 7; $i++) { 
    $date = $d->format('j'); 
    $output = $d->format('l - ') . ceil($date/7); 
    $output = str_replace(array_keys($intlDays), $intlDays, $output); 
    $days[$date] = $output; 
    $d->add(new DateInterval('P1D')); 
} 
+0

非常感謝!我會測試它! – pipoulito

+0

我試着用當前日期 '$ d = new DateTime('2016-08-03');' 的i得到: 陣列 ( [4] =>週四 - 1 [5] =>星期五 - 1 [6] =>週六 - 1 [7] =>週日 - 1 [8] = >週一 - 2 [9] =>星期二 - 2 [10] =>星期三 - 2 ) 代替: 陣列 ( [4] =>週一 - 1 [5] =>星期二 - 1 =>星期三 - 1 [7] =>星期一 - 1 [8] =>星期五 - 1 [9] =>星期六 - 1 [10] =>星期日 - 1 ) 我總是需要從星期一到星期日相對於當前日期的日期 謝謝 – pipoulito

+0

其實我需要知道本週的每一天,如果每一天都是第一,本月的第2,3,4或5日。我星期一從星期一開始。謝謝 – pipoulito

相關問題