2012-11-22 69 views
1

我在PHP(一週中的一天,從0到6)中得到了兩個存儲日期爲date("w")的日期,並且我需要知道當前日期是否在這兩者之間。 很容易,除了星期天的部分。我不能這樣做其他兩天之間的星期幾

$now = date("w"); 
if ($first_day < $now < $sec_day){ 
    //is in between 
} 

因爲如果$first_day = 5$now = 6$sec_day = 0,這會失敗,即使它是介於兩者之間。 我應該如何解決這個問題?

+0

檢查此條件'前一個條件,如果(!FIRST_DAY $ = 5 && $現在= 6) ' – Vamsi

+0

這只是一個例子。其他情況可能會失敗。 – marconalida

+0

把其他案件在其他部分 – Vamsi

回答

0

這是預期的行爲。星期五和星期日之間沒有星期六,除非你開始談論不同的星期。在這種情況下,您需要考慮date("W")(週數)。一個簡單的解決方案是使用date("z");這意味着一年中的一天。無法確定一天之間是否在兩天之內,而無需查看更大的日期。

+0

感謝您的回答,但我覺得必須有一種方法來檢查星期二是星期日之後,星期三之前沒有? – marconalida

+0

我需要每年每週檢查一次,我沒有更多的日期。 – marconalida

+1

你必須明白,星期三之後和星期天之前可能會發現星期二。這一切都取決於你問的上下文。如果你在同一周查看,使用'date(「N」)',它給出1-7週一到週日。 –

1

只需要改變天的情況下,第一天是不是最後一天大:

//first correct days 
if ($first_day > $sec_day){ 
    if ($now > $first_day){ 
     $sec_day+=7; 
    } 
    if ($now < $first_day) 
     $first_day-=7; 
    } 
} 
if ($first_day < $now < $sec_day){ 
    //is in between 
} 
相關問題