如何使用碳检查日期是否在当年?

时间:2018-10-19 20:08:42

标签: php laravel datetime

我有yyyy-mm-dd格式的几个日期,为了操作它们,我使用的是Carbon库。

我的问题是:我怎么知道当年是否已有随机日期?

例如今天是2018-10-19,如果我将它们与一些日期进行比较,则返回以下内容:

$current = '2018-10-19';
$date1 = '2018-10-20'; return false 
$date2 = '2018-11-21'; return false
$date3 = '2018-07-07'; return true

我尝试了以下方法:

$current = Carbon::now();
$date_1 = Carbon::parse('2018-07-21');

if($current > $date_1)
{
    echo 'The date was in the current year';
}

我遇到的问题是,我不知道如何应用此条件来仅查找当年的日期,因为如果将当前日期与上一年的日期进行比较,它仍然会返回true。我该如何实现?谢谢

3 个答案:

答案 0 :(得分:3)

您需要仔细查看docs。您可以使用equalTo函数轻松比较日期。一个例子:

$first = Carbon::create(2012, 9, 5, 23, 26, 11);
$second = Carbon::create(2012, 9, 5, 20, 26, 11, 'America/Vancouver');

var_dump($first->equalTo($second));                // bool(false)
var_dump($first->notEqualTo($second));             // bool(true)

该示例以及更多示例也在文档中列出。

答案 1 :(得分:2)

$current = Carbon::now();
$date_1 = Carbon::parse('2018-07-21');

if($current > $date_1 && $current->year === $date_1->year)
{
    echo 'The date was in the current year';
}

将年份与您的状况进行比较。

答案 2 :(得分:1)

要使版本更易于阅读,可以将Carbon的between()/isBetween()方法与startOfYear()结合使用:

$date = Carbon::parse('2018-10-19');

if ($date->isBetween(
    Carbon::now()->startOfYear(),
    Carbon::now()
)) {
    echo 'The date was in the current year';
}