PHP两个日期数组的差异

PHP两个日期数组的差异,php,arrays,date,Php,Arrays,Date,我有一个日期数组,其中填充了字符串格式的日期,按降序排序,每个日期30天不等。31天月已在30天月内转换 $monthdates = array('2001-29-05','2001-29-06','2001-29-07','2001-29-08','2001-29-09','2001-29-10'); 我还有另一个数组,其中包含按降序排列的字符串格式的日期,这些日期在上述数组中的日期范围内,如下所示: $customdates = array('2001-30-05','2001-31-05

我有一个日期数组,其中填充了字符串格式的日期,按降序排序,每个日期30天不等。31天月已在30天月内转换

$monthdates = array('2001-29-05','2001-29-06','2001-29-07','2001-29-08','2001-29-09','2001-29-10');
我还有另一个数组,其中包含按降序排列的字符串格式的日期,这些日期在上述数组中的日期范围内,如下所示:

$customdates = array('2001-30-05','2001-31-05','2001-01-06','2001-02-06',2001-03-06);
…假设此数组的最后一个值为'2001-29-11'

我想要的是在一个循环(或者更可能是两个)内遍历数组,将$monthdates的当前日期与$customdates数组中的日期进行比较,如果$customdates数组中的日期比$monthdates数组中的日期更近,并且正好是20天,则回显某些内容(无论什么)

例如,$customdates数组中的“2001-30-05”比$monthdates数组中的“2001-29-05”更近。在这种情况下,我们应该计算出这两天的数字差异,如果它超过20天(彼此相差20天或更多天),则打印一个随机字符串,同时继续对$customdates数组中的下一个值进行上述比较

如果找到$monthdates数组的“匹配项”,请停止对其当前值进行比较,然后转到下一个值。 在我们的示例中,“2001-30-05”和“2001-29-05”仅相差一天。 当我们为$monthdates数组中的每个值找到匹配项时,获取其下一个值。

使用and比较这两个字符串。 读到我们找到匹配的。然后我们可以休息。 如果没有比赛,我们就到了终点,然后开始下一场比赛

foreach($monthdates as $date){
     $dateObject = date_create($date);
     foreach ($customdates as $custDate){
         $dateCustomObject = date_create($custDate);
         date_diff($dateCustomObject, $dateObject)->days >= 20 ?
             substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, 15) :
             break;
     }
}

PS:我没有写打印随机字符串部分。将日期转换为时间戳,然后减去它们,以秒为单位查看差异。好主意,我将尝试一下!如果您使用这种表示法,人们(以及PHP)希望您使用完整的ISO格式,因此它将是YYYY-MM-DD而不是YYYY-DD-MM。。。如果不反转日期,像@SH-'这样的代码将产生意外的结果