我有一种情况,即创建了一系列15个日期,目前在UNIX时间戳中。
另一个变量<?php $dateidate = date(strtotime('+20 days')); ?>
目标是找到比$ dateidate更大>
的其他15个日期中最小的日期,并以'd-m-Y'
我们完成后,有一种方法可以获得比>
更大{15}的其他15个日期中的第二个,并以$dateidate
的格式显示。< / p>
答案 0 :(得分:1)
strtotime生成时间戳。 而不是这个:
<?php $dateidate = date(strtotime('+20 days')); ?>
这样做:
<?php $dateidate = strtotime('+20 days'); ?>
将所有时间戳放入具有特殊键的数组中,以便区分哪一个是您的支点。 对该数组进行排序,并对排序数组执行所需操作。
答案 1 :(得分:1)
此解决方案使用anonymous function过滤存储时间戳的$dates
数组,因此在$shorterOnes
数组中,您将拥有大于$dateidate
的所有时间戳。
然后数组为sorted,第一个数组最小,依此类推。
$dateidate=strtotime('+20 days');
$dates=array(/*timestamps*/);
$shorterOnes=array_filter($dates, function ($v) use ($dateidate) {
return $v>$dateidate;
});
sort($shorterOnes);
echo date('d-m-Y', $shorterOnes[0]);
echo date('d-m-Y', $shorterOnes[1]);
匿名函数仅适用于PHP 5.3。低于此值,您需要使用create_function()。
答案 2 :(得分:1)
因此,您有15个日期是UNIX时间戳。是有用的。
好的,这就是你可以轻松做到的事情:
$datearray = array(timestamp1,timestamp2,etc.) // an array of timestamps
$dateidate = time() + 1728000; //current time + 20 days worth of seconds (20 * 24 * 60 * 60)
foreach($datearray as $key => $date)
{
if($date < $dateidate)
{
unset $datearray[$key]; //Remove timestamp from original array if less than $dateidate
}
}
$earliestdate = min($datearray);
//min returns the least of the values in the array, opposite of max, which you could use to find the latest date in the array
$date = date('d-m-Y',$earliestdate);