如何使用 Carbon/Laravel 检查年份是否已过?

How to check if date of year has passed using Carbon/Laravel?

在 Laravel 中,我试图检查当前日期是在 任何一年 中的特定日期之前还是之后。客户的财政年度结束于 10 月 31 日,我无法检查今天是在那之前还是之后。

我试过使用 Carbon 中内置的比较函数,但我不知道要与 now() 比较什么,因为所有 Carbon 实例似乎都包含特定年份。我如何检查 now() 是否已经过了 任何 日历年的那一天?

下面的代码有效,但使用 dayOfYear() 会 return 在闰年有不同的值,这似乎是一个糟糕的解决方案。

if (now()->dayOfYear >= 304) {
    $current_year = now()->year;
} else {
    $current_year = now()->year - 1;
}

如果 now() 在任何一年的 10 月 31 日之后,我如何 return 为真?

检查当前日期是否早于任何给定日期


$isBefore31October = now()->lt(Carbon::parse('2020-10-31'));

//Will return false if now() occurs after 31st October 2020

类似地检查当前日期是否在给定日期之后

$isAfter31October = now()->gt(Carbon::parse('2020-10-31'));

//Will return true if now() occurs after 31st October 2020

根据当前日期是否在当年 10 月 31 日之后设置当前年份

$fyEnd = Carbon::parse(now()->year . "-10-31");

$current_year = now()->gt($fyEnd) ? now()->year : now()->year - 1;

看来您已经知道如何使用 getters with the Carbon object 查找日期片段。如果您想查看当前日期是否在 10 月 31 日之后,请多使用它们:

if (now()->month > 10) {
    $current_year = now()->year;
} else {
    $current_year = now()->subYear()->year;
}