2017-11-06 9 views
1

私はデータベースからのdatetimeとinput='time'フィールドからのdatetimeを持っています。Laravel Carbonが時刻が同じ分以内かどうかを確認します

私は秒なしで1つのdatetimeを持ちます(デフォルトは00です)。秒は1つです。 2つの変数が同じ分にあるかどうかを確認する必要があります。

例:真

Carbon {#349 ▼ 
    +"date": "2017-11-06 14:47:00.000000" 
    +"timezone_type": 3 
    +"timezone": "America/Chicago" 
} 
Carbon {#362 ▼ 
    +"date": "2017-11-06 14:47:44.000000" 
    +"timezone_type": 3 
    +"timezone": "America/Chicago" 
} 
ため

例:偽

Carbon {#349 ▼ 
    +"date": "2017-11-06 14:48:00.000000" 
    +"timezone_type": 3 
    +"timezone": "America/Chicago" 
} 
Carbon {#362 ▼ 
    +"date": "2017-11-06 14:47:44.000000" 
    +"timezone_type": 3 
    +"timezone": "America/Chicago" 
} 

のために、私は、この今起こっているが、それは60秒マーク以内に表示されます。私は同じ時間内にいるかどうかを表示するのに苦労しています。

$InsertTime = 2017-11-06 14:47 
$DbTime = 2017-11-06 14:47:44 


public function WithinMinCheck($InsertTime, $DbTime) { 
    $WithinMin = "true"; 
    $InsertTime = Carbon::createFromFormat('Y-m-d H:i', $InsertTime); 
    $DbTime = Carbon::createFromFormat('Y-m-d H:i:s', $DbTime); 
    $difference = $InsertTime->diffInSeconds($DbTime); 
    if ($difference >= 60) { 
    $WithinMin = "false"; 
    } else { 
    $WithinMin = "true"; 
    } 

    return $WithinMin; 
} 

答えて

2

2番目のtimevariableの2番目のフィールドを0に設定して値を比較するだけですか?

上記の解決策は分値が同じ場合にのみ機能することに注意してください。第2の時間が異なる分値を有する場合、第1の時間の60秒以内であっても、それは偽を返す。

1

文字列として日付を比較するのはなぜですか?それは非常に簡単です。

$InsertTime = '2017-11-06 14:47'; 
$DbTime = '2017-11-06 14:47:44'; 

public function WithinMinCheck($InsertTime, $DbTime) { 
    return (strpos($DbTime, $InsertTime) === 0); 
} 
関連する問題