检查任何日期是否超过 5 年

Check if any date is older than 5 years

我正在努力找出实现目标的最佳方法。我正在遍历一些涉及一组日期的数据

foreach ($fields['dates'] as $key => $dates) {
    $fields['dates'][$key]['datestring'] = Carbon::createFromFormat(
        'dmY',
        $dates['datestring']
    );
    var_dump($fields['dates'][$key]['datestring']);
}

上面的 var_dump 产生类似下面的内容

object(Carbon\Carbon)#330 (3) { ["date"]=> string(26) "2019-08-08 12:41:00.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(3) "UTC" } object(Carbon\Carbon)#328 (3) { ["date"]=> string(26) "1987-08-08 12:41:00.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(3) "UTC" }

因此,在此之上,我创建了一个变量来识别是否至少有一个日期超过 5 年。我还为今天创建了一个日期对象。

$moreThanFiveYears = false;
$now = Carbon::now();

现在我想弄清楚的是如何执行实际检查?当我尝试上述操作时,它会抱怨,因为 $now 与我其他日期的格式不同。我试过给它添加一种格式,但它只产生类似 20190219 的东西,而不是原始日期产生的额外数据。

那么如何循环所有日期以确保至少有一个大于 5 年?

谢谢

试试这个。

<?
$check_date = '2019-12-18 18:20:40';
if(strtotime($check_date) < strtotime('-5 year')){
 echo "YES";
}else{
echo "NO";
}
?>

通过 subYears() 获取五年前并通过 greaterThan() 进行比较。

$fiveYearsAgo = Carbon::now()->subYears(5);

foreach ($fields['dates'] as $key => $dates) {
    $fields['dates'][$key]['datestring'] = Carbon::createFromFormat(
        'dmY',
        $dates['datestring']
    );

    if ($fields['dates'][$key]['datestring']->greaterThan($fiveYearsAgo)) {
        $moreThanFiveYears = false;
    }
}