日期 [第一个月] php 和 Carbon 的问题

Issue with dates [ first of month ] php and Carbon

我在比较日期时遇到问题。当我想知道一个日期(默认 php 日期)是否在两个 Carbon 日期之间时。我在一个月的第一天得到了不同。

$date = date("2017-05-01");
    $date2 = date("2017-05-31");
    $since = Carbon::now()->firstOfMonth();
    $to = Carbon::now()->lastOfMonth();//->subDay();//$now->lastOfMonth();
    $this->info('since '.$since);
    $this->info('to '.$to);
    $this->info('date '.$date);
    $this->info('date2 '.$date2);
    $this->info("-------------------");
    if($date>= $since && $date <= $to ){
        $this->info('date in');
    }else{
        $this->info('date out');
    }
    if($date2>= $since && $date2 <= $to ){
        $this->info('date2 in');
    }else{
        $this->info('date2 out');
    }

输出为:

since 2017-05-01 00:00:00
to 2017-05-31 00:00:00
date 2017-05-01
date2 2017-05-31
-------------------
date out
date2 in

我希望 $date 输出为 'date in'。 怎么了?

您正在比较 $date、$since 和 $to 之间的不同变量类型,因此输出很奇怪。 如果你 运行 这个:

       dd($date, $since, $to); 

你会看到 $date 是一个字符串,另外两个是对象。

你应该比较他们的时间戳:

        $date = strtotime("2017-05-01");
        $date2 = strtotime("2017-05-31");
        $since = Carbon::now()->firstOfMonth()->timestamp;
        $to = Carbon::now()->lastOfMonth()->timestamp;

现在 GMT 时间是 6 月,所以这也会导致您的程序输出 "date out"