2016-08-15 72 views
0

我有一個看起來像這樣的代碼:比較不同月份任何回報兩個日期在PHP

while ($DateNow <= $DateFinish) { 
    echo "<td>".$DateNow." | ".$DateFinish."</td>"; 
    $DateNow = date("d-m-Y", strtotime("next day, ".$Datenow)); 
} 

此代碼是在表內,因此將每天在一個星期一個新的小區。 $DateNow週一開始,週六$DateFinish。所以它會使6個新的< td>。

它運行良好,但是當比較日期在不同的月份時會出現問題,例如8月29日星期一9月3日星期六,它什麼都沒有返回。我嘗試了每個可能的2個月的周,沒有出現。但是,如果還在1個月內,它就會出現。

對此有何想法?

+3

'01-02-2016'在詞彙上比'31-01-2016'小。如果你想這樣循環,你需要比較'Y-m-d'格式的日期。 – Phylogenesis

+0

'$ DateNow'和'$ DateFinish'的這些值是什麼?他們是字符串嗎? –

+0

現在,它使用d-m-Y格式,假設日期是日期類型。 –

回答

1

當按照字典順序(按字母順序)排列d-m-Y格式的一組日期時,您不會得到預期的排序。

例如

30-01-2016 
31-01-2016 
01-02-2016 
02-02-2016 
28-02-2016 
29-02-2016 
01-03-2016 
02-03-2016 

排序之後變爲

01-02-2016 
01-03-2016 
02-02-2016 
02-03-2016 
28-02-2016 
29-02-2016 
30-01-2016 
31-01-2016 

爲了以這種方式比較時得到更明智的排序,您需要將日期格式更改爲更有利於自然排序的內容(如Y-m-d)。

+0

好吧謝謝,它現在可以工作 –