2017-06-01 4 views
0

Ich habe ein Problem beim Vergleichen von Daten. Wenn ich wissen möchte, ob ein Datum (Standard-PHP-Datum) zwischen zwei Carbon-Daten liegt. Ich bekomme einen Unterschied am ersten Tag des Monats.Problem mit Daten [ersten Monat] PHP und 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'); 
    } 

Die Ausgabe lautet:

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 

Ich erwarte, dass $ output Datum 'Datum in' sein. Was ist los?

Antwort

0

Sie vergleichen verschiedene Variablentypen zwischen $ date, $ since und $ so, dass die Ausgabe merkwürdig ist. Wenn Sie führen dies:

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

Sie, dass $ date sehen eine Zeichenfolge ist und die beiden anderen Objekte sind.

Sie sollten ihre Zeitstempel werden Vergleich:

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

Auch jetzt im Juni GMT-Zeit ist, so dass auch das Programm zur Ausgabe von „date out“

+0

Dank Sie verursachen! Ich habe es so gemacht –