如何使用输入日期获得比输入日期早或者等于数组的最近日期?
例如,我的数组看起来像这样。
@dates = ("200811","200905","200912","201005","201202");
我的输入日期是
$inputdate = "201003";
如何在阵列中获得最近的日期“200912”。
日期格式为YEARMM。
由于
答案 0 :(得分:4)
对日期进行排序,只选择输入日期之前的日期,取最后一个日期:
print ((grep $_ <= $inputdate, sort @dates)[-1]);
答案 1 :(得分:2)
use List::Util qw( max );
my $date = max grep { $_ <= $inputdate } @dates;
答案 2 :(得分:-2)
这里的逻辑是一年后,如果月份是1月,则从1月到12月更换月份,否则在同一年返回一个月。
我在Perl中编写的代码不多,PHP中的代码是: (我把它放在这里给你逻辑。编码它应该是微不足道的)
$dates = array("200811","200905","200912","201005","201202");
$inputdate = "201003";
$date = $inputdate;
while ($found==0) {
if (in_array($date, $dates)) {
$found = 1;
echo "the date is " . $date;
}
if ($date%100==1) { // if it's january, we need to change to december of the previous year
$date = $date - 100 + 12;
}
else {
$date = $date - 1; //go one month back in the same year
}
}