我有一个仅包含月份和年份的日期数组。我想从中获取最小和最大日期。
$dates = array('1-2018','5-2019','10-2018','5-2020');
答案 0 :(得分:0)
您应该使用DateTime
method
DateTime::createFromFormat
对象中的所有字符串
$dates = array_map(function($date){
return DateTime::createFromFormat('m-Y',$date);
}, $dates);
然后使用sort
函数对其进行排序
sort($dates);
答案 1 :(得分:0)
使用usort。 usort需要一个比较函数。只有月年的字符串不能用strtotime解析。使用Day(我使用简单的1-)可以返回strtotime正确的时间戳。此功能是针对升序排序的。对于后代排序,您只能切换$ a和$ b。 我为数组添加了一些值,以便进行更好的测试。
<?php
$dates = array('1-2018','5-2019','10-2018','5-2020','9-1978','6-2001');
usort($dates, function($a,$b){ return strtotime('1-'.$a) <=> strtotime('1-'.$b);});
echo "<pre>".var_export($dates, true)."\n";
echo "Min: ".reset($dates)."\n";
echo "Max: ".end($dates)."\n";
编辑:最小值是数组中的第一个值,最大值是最后一个值。
输出:
array (
0 => '9-1978',
1 => '6-2001',
2 => '1-2018',
3 => '10-2018',
4 => '5-2019',
5 => '5-2020',
)
Min: 9-1978
Max: 5-2020