2016-08-15 33 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

好吧谢谢,它现在可以工作 –